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

  1. Add the missing package name to the download_types set near the top of nodedownload.py so it becomes a key in auto_downloads.
  2. Fix the caller to pass the exact registered package name (check spelling/casing).
  3. 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

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


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/4832634192b065ad. Report an issue: GitHub.