How to Use "import" in Node.js?

Learn how to use ES6 import in Node.js

By default, Node.js treats JavaScript code as CommonJS modules. This means that the "import" syntax to load modules is not there. However, depending on the Node.js version you're using, you can easily tell Node.js to use ES modules, which would enable the "import" syntax:

Enable ES Modules in Node.js v13 and Above

In Node.js v13+, you can simply add "type": "module" to (the nearest parent) package.json to treat .js files as ES Modules, for example, like so:

// package.json
{
  "name": "...",
  "type": "module",
  // ...
}

After adding the "type": "module" directive, you should be able to use import in your code.

Please note that the "type" field not only applies to initial entry points (e.g. node app.js) but also to files referenced by import statements and import() expressions.

Enable ES Modules in Node.js v8 and Above

For Node.js v8+, if you simply change the file extension to .mjs, Node.js will treat the code as ES modules (regardless of the type directive in the nearest parent package.json). This would allow you to use import in your code.

In Node.js v8 - v12, however, you will see the following warning:

ExperimentalWarning: The ESM module loader is experimental.

To fix that, you need to additionally pass the --experimental-modules flag when running a file, for example, like so:

node --experimental-modules app.mjs

Using the .mjs extension provides flexibility if you wish to keep some files as CommonJS and others as ES modules. For example, this can be useful when you're migrating your code from CommonJS to ES modules.


Hope you found this post useful. It was published . Please show your love and support by sharing this post.