nodejs / nodejs/node

Error [ERR_INTERNAL_ASSERTION]: Unexpected module status 0. Cannot require() ES Module ... because it is not yet fully loaded.

Open
#62,130 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

esm
Dominant language
JavaScript
Stars
122k
Forks
37.3k
Avg merge
4d 2h
Merged PRs (30d)
283

Description

Version

25.8.0

Platform
Linux nic-desktop 6.17.0-14-generic #14-Ubuntu SMP PREEMPT_DYNAMIC Fri Jan  9 17:01:16 UTC 2026 x86_64 GNU/Linux
Subsystem

require(esm)

What steps will reproduce the bug?
  1. Clone https://github.com/nicolo-ribaudo/babel-polyfills/tree/nodejs-bug
  2. Run yarn && yarn build
  3. Run yarn jest es-shims

Note that this is not using Jest's vm-based ESM support. It's using jest-light-runner to run directly in native Node.js ESM.

How often does it reproduce? Is there a required condition?

Consistently. Note that if I run only one test (yarn jest es-shims -t "tepmlate tag") it does not fail.

What is the expected behavior? Why is that the expected behavior?

That it does not tell me to submit a bug report :P

What do you see instead?
    Error [ERR_INTERNAL_ASSERTION]: [BABEL]: Unexpected module status 0. Cannot require() ES Module /home/nic/Documents/dev/github.com/babel/babel-polyfills/packages/babel-plugin-polyfill-es-shims/lib/index.js because it is not yet fully loaded.
    This may be caused by a race condition if the module is simultaneously dynamically import()-ed via Promise.all().
    Try await-ing the import() sequentially in a loop instead.
     (From /home/nic/Documents/dev/github.com/babel/babel-polyfills/packages/babel-plugin-polyfill-es-shims/test/node_modules/@@/babel-plugin-polyfill-es-shims.js in non-loader-hook thread)
    This is caused by either a bug in Node.js or incorrect usage of Node.js internals.
    Please open an issue with this stack trace at https://github.com/nodejs/node/issues
     (While processing: /home/nic/Documents/dev/github.com/babel/babel-polyfills/packages/babel-plugin-polyfill-es-shims/test/node_modules/@@/babel-plugin-polyfill-es-shims.js)
        at assert.fail (node:internal/assert:17:9)
        at ModuleLoader.importSyncForRequire (node:internal/modules/esm/loader:358:16)
        at loadESMFromCJS (node:internal/modules/cjs/loader:1620:24)
        at Module._compile (node:internal/modules/cjs/loader:1785:5)
        at Object..js (node:internal/modules/cjs/loader:1934:10)
        at Module.load (node:internal/modules/cjs/loader:1524:32)
        at Module._load (node:internal/modules/cjs/loader:1326:12)
        at TracingChannel.traceSync (node:diagnostics_channel:328:14)
        at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
        at Module.require (node:internal/modules/cjs/loader:1547:12)
        at require (node:internal/modules/helpers:152:16)
        at Object.<anonymous> (/home/nic/Documents/dev/github.com/babel/babel-polyfills/packages/babel-plugin-polyfill-es-shims/test/node_modules/@@/babel-plugin-polyfill-es-shims.js:1:18)
        at Module._compile (node:internal/modules/cjs/loader:1803:14)
        at Object..js (node:internal/modules/cjs/loader:1934:10)
        at Module.load (node:internal/modules/cjs/loader:1524:32)
        at Module._load (node:internal/modules/cjs/loader:1326:12)
        at TracingChannel.traceSync (node:diagnostics_channel:328:14)
        at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
        at Module.require (node:internal/modules/cjs/loader:1547:12)
        at require (node:internal/modules/helpers:152:16)
Additional information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with the babel-polyfills commands in the issue, then start at ModuleLoader.importSyncForRequire in node:internal/modules/esm/loader and the related CommonJS loader stack entries. Compare the single-test and full-suite behavior, and use the reported require(esm) path to trace the module-loading state. Done means the provided reproduction no longer raises the internal assertion.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.