Issue #15865 : Fixed the change to switch to the fallback by manangarg21 · Pull Request #15867 · jestjs/jest (original) (raw)
##Summary
Problem: In Jest’s VM, process.features.require_module can be true (inherited from Node), causing defensive code to attempt require('./some-esm.js') and throw “Must use import to load ES Module”.
Fix: In packages/jest-util/src/createProcessObject.ts, when creating Jest’s VM process, override process.features.require_module to always return false (if the flag exists). This aligns the flag with Jest’s capabilities so defensive code takes the fallback path.
Scope: Only the VM’s process.features.require_module getter is affected, guarded behind presence checks. No other global behaviors are changed.
Changed files:
packages/jest-util/src/createProcessObject.ts
packages/jest-util/src/tests/installCommonGlobals.test.ts (new assertion added)
##Test plan
Added a test verifying the override:
packages/jest-util/src/tests/installCommonGlobals.test.ts
it('overrides process.features.require_module to false when present', ...)
Commands run and output:
yarn install --immutable
yarn build:ts
yarn build:js
yarn jest packages/jest-util/src/tests/installCommonGlobals.test.ts --color
Output:
PASS packages/jest-util/src/tests/installCommonGlobals.test.ts
✓ returns the passed object (63 ms)
✓ turns a V8 global object into a Node global object (3 ms)
✓ overrides process.features.require_module to false when present (2 ms)
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 0.422 s