我不明白出了什么问题。我检查了其他论坛谈论翻译和巴贝尔。我该怎么办?
node -v
v5.5.0
我的代码:
import recast from 'recastai'
和错误
(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
答案 0 :(得分:40)
ES6导入是最近推出的功能,目前稳定版本的Node尚不支持它们。 Node.js问题跟踪器有一个open issue - 但是在V8和Node添加对此功能的支持之前,您需要使用一个转换器(最常用的是babel)才能使用导入
为了快速尝试转换,babel提供了一个基于Web的REPL。 This one演示了您的代码被转换。
babel project homepage 指向相关资源,以便开始使用Babel并将其与您的开发工作流程集成。
对于最简单的设置,请访问此setup page并在Babel内置部分中选择CLI。
这基本上涉及三个简单的步骤:
npm install --save-dev babel-cli babel-preset-es2015
.babelrc
配置文件:echo '{ "presets": ["es2015"] }' > .babelrc
./node_modules/.bin/babel src -d lib
上述设置页面还说明了如何添加npm脚本以简化最后一步。或者,您可以将babel与编辑器或构建链集成,以便在更改时自动编译文件。
答案 1 :(得分:7)
如果你不想处理babel。这个对我有用。
const calc = require('./my_calc');
let {add, multiply} = calc;
答案 2 :(得分:5)
1)安装最新的预设
yarn add --dev babel-preset-latest
2)创建.babelrc
并添加以下内容
{
"presets": ["latest"]
}
3)运行你的脚本
npx babel-node yourscript.js
或在package.json
文件中添加
"scripts": {
"start": "babel-node index.js"
}
答案 3 :(得分:1)
入门
首先我们将安装babel-cli。
$ npm install --save-dev babel-cli
除了一些预设。
$ npm install --save-dev babel-preset-es2015 babel-preset-stage-2
的package.json:
"scripts": {
"start": "babel-node index.js --presets es2015,stage-2"
}
运行:
$ npm start
使用 nodemon :
查看文件更改我们可以使用nodemon改进我们的npm启动脚本。
$ npm install --save-dev nodemon
然后我们可以更新我们的npm启动脚本。
的package.json:
"scripts": {
"start": "nodemon index.js --exec babel-node --presets es2015,stage-2"
}
运行:
$ npm start
如果您使用 pm2 ,请按以下步骤操作:
$ pm2 start app.js --interpreter babel-node
答案 4 :(得分:1)
解决这个问题非常简单,import
是ES6语法,Node很难支持它,您需要添加 Babel 作为编译器,转到package.json并添加以下
首先添加一个脚本标签以在运行JS代码进行编译时使用babel。
"scripts": {
"start": "nodemon ./app.js --exec babel-node -e js"
}
然后将以下内容添加为Babel devDependencies
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1"
}
此后,您还需要配置babel预设文件,因此在根目录中创建 .babelrc 文件并按如下所示定义预设
{
"presets": [
"es2015",
"stage-0"
]
}
别忘了最后做npm install
答案 5 :(得分:0)
感谢NodeJS enhancement proposal我们有一条前进的道路。您可以使用@standard-things/esm
找到announcement here简单运行
npm i --save @std/esm
今天打包。