Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specifying ES6 modules in Node 12

From my understanding, I can use ES6 imports with Node 12 if I have the line "type": "module" in my package.json file. I'm trying to test this, but I can't get it to work. Anybody know what I'm doing wrong?

My package.json:

{
  "scripts": {
    "run": "clear;clear; node package/index.js",
  },
  "type": "module"
}

and my package/index.js file:

import * as fs from 'fs'

running npm run-script run outputs

import * as fs from 'fs'
       ^

SyntaxError: Unexpected token *
    at Module._compile (internal/modules/cjs/loader.js:718:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:785:10)
    at Module.load (internal/modules/cjs/loader.js:641:32)
    at Function.Module._load (internal/modules/cjs/loader.js:556:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:837:10)
    at internal/main/run_main_module.js:17:11
like image 769
Anthony Monterrosa Avatar asked Nov 20 '25 23:11

Anthony Monterrosa


1 Answers

Per the documentation and this announcement blog article, for "type": "module" to work you also need to set the --experimental-modules flag when running Node. So in your case the package file script would be:

"run": "clear; clear; node --experimental-modules package/index.js",

Note that this will also enable a warning at startup:

ExperimentalWarning: The ESM module loader is experimental.
like image 135
jonrsharpe Avatar answered Nov 22 '25 17:11

jonrsharpe



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!