使用ES6'import'语句而不使用转换器

时间:2017-07-08 08:47:34

标签: node.js module ecmascript-6 transpiler

我有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”语句)而没有转换器的方法?

2 个答案:

答案 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');