Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
How to use ESM tests with jest?

My setup

  • Node v14.16.0
  • I have one test file that contains a simple test written with ESM modules (import).
  • In package.json I have a script (following Jest documentation adapted to Windows): "test": "set \"NODE_OPTIONS=--experimental-vm-modules\" && npx jest"
  • My tests are run w/ npm run test (the script above)

My goal: Run the ESM tests using jest.

My attempts:

(1) CommonJS App w/ .js test

  • package.json contains "type": "commonjs"
  • Test file named test.js
  • Error: SyntaxError: Cannot use import statement outside a module (This is expected because the test is being run as a commonjs file.)

(2) CommonJS App w/ .mjs test

  • package.json contains "type": "commonjs"
  • Test file named test.mjs
  • Error: No tests found (Jest isn't finding the file?)

(3) ESM App w/ .js or .mjs

  • package.json now has "type": "module"
  • Test file named test.mjs or test.js
  • Error: ReferenceError: module is not defined at ...jest.config.js:6:1

(4) CommonJS App and CommonJS test

  • package.json contains "type": "commonjs"
  • Test file named test.js but using the commonjs require syntax (and without the ESM modules I'd like to include); Note that this is not what I want, but included just to show there's nothing wrong with the test itself.
  • Test runs fine and passes
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Here are the steps I took to run Jest with a test using ESM. The source files under test were also written using ESM.

  1. Set my node version to 14.16.0
  2. npm i jest -D installs Jest as a dev dependency
  3. Add "type": "module" to package.json
  4. Update scripts in package.json to include "test": "node --experimental-vm-modules ./node_modules/.bin/jest"
  5. Create a jest.config.js file with the following content: export default { transform: {} }
  6. Have at least one test that could be found using the default testMatch (mine was inside __tests__ dir)
  7. npm test

There is a more complete example in the webpack-strip-debug-loader repository on GitHub.

over 4 years ago · Santiago Trujillo Report

0

After a lot of fiddling, this is my successful setup (the parts that matter):

  • package.json has
  "type": "commonjs",
  "script": {
    "test": "NODE_OPTIONS=--experimental-vm-modules jest"
  }
  • jest.config.mjs (yes, esModule)
export default {
  moduleFileExtensions: [
    "mjs",
    // must include "js" to pass validation https://github.com/facebook/jest/issues/12116
    "js",
  ],
  testRegex: `test\.mjs$`,
};

That having to include "js" is a historic relic from the times modules where obviously .js files. Follow https://github.com/facebook/jest/issues/12116 for update.

over 4 years ago · Santiago Trujillo Report

0

For me to work it was only necessarry to set script "test" as follows:

"test": "cross-env NODE_OPTIONS=--experimental-vm-modules npx jest"

and yeah, don't forget -> npm i cross-env jest

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!