nodejs/node · error · Exception
Internal error: "%s" is not in the --downloads list. Check n
Error message
Internal error: "%s" is not in the --downloads list. Check nodedownload.py
What it means
Raised by candownload() in Node's tools/configure.d/nodedownload.py when the requested package name is not a key in the auto_downloads dict. auto_downloads is built from the download_types set, so an unknown package name indicates a programming error — a caller asked about a package the download subsystem doesn't know about.
Source
Thrown at tools/configure.d/nodedownload.py:132
if not anOpt or anOpt == "":
# ignore stray commas, etc.
continue
elif anOpt == 'all':
# all on
theRet = dict((key, True) for (key) in download_types)
else:
# turn this one on
if anOpt in download_types:
theRet[anOpt] = True
else:
# future proof: ignore unknown types
print('Warning: ignoring unknown --download= type "%s"' % anOpt)
# all done
return theRet
def candownload(auto_downloads, package):
if not (package in auto_downloads.keys()):
raise Exception('Internal error: "%s" is not in the --downloads list. Check nodedownload.py' % package)
if auto_downloads[package]:
return True
else:
print("""Warning: Not downloading package "%s". You could pass "--download=all"
(Windows: "download-all") to try auto-downloading it.""" % package)
return False
View on GitHub (pinned to 1b2de5e052)
Solutions
- Add the missing package name to the download_types set near the top of nodedownload.py so it becomes a key in auto_downloads.
- Fix the caller to pass the exact registered package name (check spelling/casing).
- Re-run configure --download=<package> only after the name is registered.
Example fix
# before download_types = set(['icu']) candownload(auto_downloads, 'openssl') # not registered -> internal error # after download_types = set(['icu', 'openssl']) candownload(auto_downloads, 'openssl')
Defensive patterns
Strategy: validation
Validate before calling
from tools.configure.d.nodedownload import download_types
def assert_package_registered(package: str):
if package not in download_types:
raise ValueError(f'{package!r} not registered in download_types; add it in nodedownload.py') Type guard
def is_registered_download(package: str) -> bool:
from tools.configure.d.nodedownload import download_types
return package in download_types Try / catch
null
Prevention
- Register every new downloadable package in download_types when introduced.
- Use the exact registered name in candownload callers.
- Add a unit test asserting candownload accepts every download_type.
When it happens
Trigger: Code calls candownload(auto_downloads, package) with a package string that was never added to the download_types set / auto_downloads dict. The message explicitly says 'Internal error ... Check nodedownload.py' because it's a developer/code bug, not a user config issue.
Common situations: Adding a new auto-downloadable package but forgetting to register it in download_types; a typo in the package name passed to candownload; refactoring that renames a package without updating callers.
Related errors
- Error: Don't know how to unpack %s with extension %s
- --enable-v8windbg is incompatible with --without-bundled-v8.
- --v8-enable-hugepage is supported only on linux.
- Only one of the --v8-enable-object-print or --v8-disable-obj
- Only one of the --v8-enable-temporal-support or --v8-disable
AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13).
Data as JSON: /api/errors/4832634192b065ad.
Report an issue: GitHub.