在没有转译器的情况下使用 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 查看完整的详细信息。