Accepted answer

In the nearest parent package.json file, add the top-level "type" field with a value of "module". This will ensure that all .js and .mjs files are interpreted as ES modules. You can interpret individual files as CommonJS by using the .cjs extension.

// package.json
  "type": "module"

Option 2

Explicitly name files with the .mjs extension. All other files, such as .js will be interpreted as CommonJS, which is the default if type is not defined in package.json.

same issue and the following has fixed it (using Node.js 12.13.1):

  • Change .js files extension to .mjs
  • Add --experimental-modules flag upon running your app.
  • Optional: add "type": "module" in your package.json

include babel-node path while running nodemon as follows:

nodemon node_modules/.bin/babel-node index.js

You can add in your package.json script as:

debug: nodemon node_modules/.bin/babel-node index.js

Just add --presets '@babel/preset-env'.

For example,

babel-node --trace-deprecation --presets '@babel/preset-env' ./yourscript.js


in babel.config.js

module.exports = {
  presets: ['@babel/preset-env'],


<script type="module" src="/src/moduleA.js"></script>

instead of


Add "type": "module", to your package.json file.

And restart your application:

npm start

replacing "import" by "require".

// import { parse } from 'node-html-parser';
const parse = require('node-html-parser');

a different solution from: How to enable ECMAScript 6 imports in Node.js

Install ESM:

npm install --save esm

Run with ESM:

node -r esm server.js

ou can do that by setting the type: "module" of your app inside the package.json file:


  "type": "module"