Nodejs5和babel中的“意外令牌导入”?

在js文件中,我使用导入而不是要求

import co from 'co';

并尝试直接通过nodejs运行它,因为它说导入是“运输功能”,并且没有任何运行时标志(https://nodejs.org/en/docs/es6/),但我得到了一个错误

import co from 'co';
^^^^^^

SyntaxError: Unexpected token import

然后我尝试使用巴别塔

npm install -g babel-core
npm install -g babel-cli
npm install babel-core //install to babel locally, is it necessary?

和运行者

babel-node js.js

仍然遇到相同的错误,意外的令牌导入?

我怎么能摆脱它?


答案 1

来自 babel 6 发行说明:

由于 Babel 专注于成为 JavaScript 工具的平台,而不是 ES2015 的转译器,因此我们决定让所有插件都选择加入。这意味着当您安装 Babel 时,默认情况下,它将不再转译您的 ES2015 代码。

在我的设置中,我安装了es2015预设

npm install --save-dev babel-preset-es2015

或用纱线

yarn add babel-preset-es2015 --dev

并在我的.babelrc中启用了预设

{
  "presets": ["es2015"]
}

答案 2

在模块实现之前,您可以使用 Babel “transpiler” 来运行您的代码:

npm install --save babel-cli babel-preset-node6

然后

./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js

如果你不想输入,你可以通过以下方式保存.babelrc文件:--presets node6

{
  "presets": [
    "node6"
  ]
}

查看 https://www.npmjs.com/package/babel-preset-node6https://babeljs.io/docs/usage/cli/