我有nodejs v8
$ node -v
v8.1.3
和一个脚本:
import cmd from "commander";
尝试启动此脚本时出现错误“意外的令牌导入”:
$ node script.js
/.../script.js:1
(function (exports, require, module, __filename, __dirname) { import cmd from "commander";
^^^^^^
SyntaxError: Unexpected token import
是否存在使用ES6模块(“import”语句)而没有转换器的方法?
答案 0 :(得分:8)
接受的答案不再是正确的答案。在NodeJS 4+中,您现在可以通过安装@std/esm
包并使用命令行上的-r @std/esm
选项调用脚本来启用ES模块。例如:
node -r @std/esm index.js
请注意,为了让Node自动检测文件是否应该使用ESM(允许您使用.js
文件扩展名而不是使用Michael Jackson解决方案,.mjs
),您将会必须在package.json
添加以下内容:
"@std/esm": {
"esm": "js"
},
在GitHub上的standard-things/esm查看完整详情。
答案 1 :(得分:2)
不使用转换器,您必须使用require
:
const cmd = require('commander');