ES modules vs CommonJS in Node.js: `require is not defined` error
posée a month ago435 vuesen
After adding "type": "module" to package.json I get ReferenceError: require is not defined in ES module scope. Without it, import statements fail. What's the right setup in 2026?
Diagnostic IA
Généré par IA. Ce n'est pas une réponse — la communauté ci-dessous le confirme ou le corrige. Vérifiez toujours avant de vous y fier.
1 réponse
"type": "module" tells Node to treat .js files as ES modules, where require, module.exports and __dirname don't exist.
For new projects, go all-in on ESM:
import fs from 'node:fs/promises';
import path from 'node:path';
const dir = import.meta.dirname; // Node 20.11+ replacement for __dirname
If you must load a CommonJS-only package, a default import usually works (import pkg from 'old-lib'). As a last resort:
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
Recent Node versions (22.12+) can also require() ES modules synchronously, which removes most of the old interop pain.
Connectez-vous pour dire si ça a marché.
Sign in and verify your email to post an answer.