节点错误:SyntaxError:意外的令牌导入

Ste*_*lec 55 babel node.js

我不明白出了什么问题.我检查了其他论坛谈论翻译和巴贝尔.我需要做什么?

node -v
v5.5.0
Run Code Online (Sandbox Code Playgroud)

我的代码:

import recast from 'recastai'
Run Code Online (Sandbox Code Playgroud)

和错误

(function (exports, require, module, __filename, __dirname) { import recast from 'module1'
                                                              ^^^^^^

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:139:18)
    at node.js:999:3
Run Code Online (Sandbox Code Playgroud)

lor*_*non 43

ES6导入是最近推出的功能,当前稳定版本的Node尚不支持它们.Node.js的问题跟踪器有一个开放式问题对于这一点-但直到V8和节点添加此功能的支持,你将需要使用transpiler(最流行的一种是巴贝尔),以能够使用进口.

为了快速尝试转换,babel提供了一个基于Web的REPL.这个演示了您的代码被转换.

巴贝尔项目主页指向为相关资源入门巴贝尔和你的开发工作流程相集成.

对于最简单的设置,请访问此设置页面并在Babel内置部分中选择CLI.

这主要涉及三个简单的步骤:

  1. 安装babel-cli: npm install --save-dev babel-cli babel-preset-es2015
  2. 创建.babelrc配置文件:echo '{ "presets": ["es2015"] }' > .babelrc
  3. 使用已安装的模块来转换源代码: ./node_modules/.bin/babel src -d lib

上述设置页面还说明了如何添加npm脚本以简化最后一步.或者,您可以将babel与编辑器或构建链集成,以便在更改时自动编译文件.


Mah*_*ran 9

如果你不想处理babel.这个对我有用.

const calc = require('./my_calc');
let {add, multiply} = calc;
Run Code Online (Sandbox Code Playgroud)


Jer*_*ony 5

1)安装最新的预设

yarn add --dev babel-preset-latest
Run Code Online (Sandbox Code Playgroud)

2)创建.babelrc并添加以下内容

{
    "presets": ["latest"]
}
Run Code Online (Sandbox Code Playgroud)

3)运行你的脚本

npx babel-node yourscript.js
Run Code Online (Sandbox Code Playgroud)

或者在你的package.json文件中添加

"scripts": {
  "start": "babel-node index.js"
}
Run Code Online (Sandbox Code Playgroud)