I’m trying to get the hang of ES6 imports in Node.js and am trying to use the syntax provided in this example:
Cheatsheet Link
I’m looking through the support table, but I was not able to find what version supports the new import statements (I tried looking for the text import/require). I’m currently running Node.js 8.1.2 and also believe that since the cheatsheet is referring to .js files it should work with .js files.
As I run the code (taken from the cheatsheet’s first example):
import { square, diag } from 'lib';
I get the error:
SyntaxError: Unexpected token import.
Reference to library I’m trying to import:
//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
return x * x;
}
export function diag(x, y) {
return sqrt(square(x) + square(y));
}
What am I missing and how can I get node
to recognize my import
statement?
1Best Answer
Node.js has included experimental support for ES6 support.
Read more about here: https://nodejs.org/docs/latest-v13.x/api/esm.html#esm_enabling.
TLDR;
Node.js >= v13
It’s very simple in Node.js 13 and above. You need to either:
- Save the file with
.mjs
extension, or - Add
{ "type": "module" }
in the nearestpackage.json
.
You only need to do one of the above to be able to use ECMAScript modules.
Node.js <= v12
If you are using Node.js version 9.6 – 12, save the file with ES6 modules with .mjs
extension and run it like:
node --experimental-modules my-app.mjs