在没有转译器的情况下使用 ES6 'import' 语句
Use ES6 'import' statement without transpilers
我有 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" 语句)?
不使用转译器,你必须使用require
:
const cmd = require('commander');
已接受的答案不再是正确答案。在 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 查看完整的详细信息。
我有 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" 语句)?
不使用转译器,你必须使用require
:
const cmd = require('commander');
已接受的答案不再是正确答案。在 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 查看完整的详细信息。