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

在js文件中,我使用import来代替require

import co from 'co'; 

并试图由nodejs直接运行它,因为它表示导入是“运送function”和支持没有任何运行时标志( https://nodejs.org/en/docs/es6/ ),但我得到一个错误

 import co from 'co'; ^^^^^^ SyntaxError: Unexpected token import 

然后我试着用babel

 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 

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

我怎么能摆脱它?

从babel 6发行说明:

由于Babel专注于成为JavaScript工具的平台,而不是ES2015的编译器,所以我们决定让所有的插件都可以select使用。 这意味着当您安装Babel时,默认情况下不会再传输您的ES2015代码。

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

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

或与纱线

 yarn add babel-preset-es2015 --dev 

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

 { "presets": ["es2015"] } 

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

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

接着

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

如果你不想input--presets node6你可以通过以下方法保存.babelrc文件:

 { "presets": [ "node6" ] } 

请参阅https://www.npmjs.com/package/babel-preset-node6和https://babeljs.io/docs/usage/cli/

  1. 安装软件包: babel-corebabel-polyfill babel-preset-es2015babel-preset-es2015
  2. 用内容创build.babelrc{ "presets": ["es2015"] }
  3. 不要把import语句放在主入口文件中,使用另一个文件,比如: app.js ,你的主入口文件应该是babel-core/registerbabel-polyfill ,使babel在第一个地方独立工作。 那么你可以在需要app.js地方import语句。

例:

index.js

 require('babel-core/register'); require('babel-polyfill'); require('./app'); 

app.js

 import co from 'co'; 

它应该与node index.js

这可能是你正在运行未编译的文件。 让我们开始干净!

在你的工作目录中创build:

  • 两个文件夹。 一个用于预编译的es2015代码。 另一个是babel的输出。 我们将它们分别命名为“src”和“lib”。
  • 包含以下对象的package.json文件:

     { "scripts": { "transpile-es2015": "babel src -d lib" }, "devDependencies": { "babel-cli": "^6.18.0", "babel-preset-latest": "^6.16.0" } } 
  • 使用以下指令命名“.babelrc”的文件: {"presets": ["latest"]} “presets” {"presets": ["latest"]}

  • 最后,在你的src / index.js文件中写testing代码。 在你的情况下: import co from 'co'.

通过您的控制台:

  • 安装你的软件包: npm install
  • 使用-d(aka –out-dir)标志将您的源目录传输到您的输出目录,这已经在我们的package.json中指定了: npm run transpile-es2015
  • 从输出目录运行你的代码! node lib/index.js

如果您使用预设为react-native,则接受导入

 npm i babel-preset-react-native --save-dev 

并把它放在你的.babelrc文件中

 { "presets": ["react-native"] } 

在你的项目根目录下

https://www.npmjs.com/package/babel-preset-react-native

在您的应用程序中,您必须声明您的require()模块,而不是使用“import”关键字:

 const app = require("example_dependency"); 

然后,创build一个.babelrc文件:

 { "presets": [ ["es2015", { "modules": false }] ] } 

然后,在你的gulp文件中,一定要声明你的require()模块:

 var gulp = require("gulp");