在js文件中,我使用import而不是require
import co from 'co';
并试图直接由nodejs运行它,因为它说导入是运输功能'和支持没有任何运行时标志(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
仍有同样的错误,意外的令牌导入?
我怎么能摆脱它?
答案 0 :(得分:197)
来自babel 6发行说明:
由于Babel专注于成为JavaScript工具的平台,而不是ES2015转换器,我们决定让所有插件选择加入。这意味着当您安装Babel时,它将不再默认转换您的ES2015代码。
在我的设置中,我安装了es2015预设
ng-include
或用纱线
npm install --save-dev babel-preset-es2015
并启用了我的.babelrc中的预设
yarn add babel-preset-es2015 --dev
答案 1 :(得分:51)
在实施模块之前,你可以使用Babel"转发器"运行你的代码:
npm install --save babel-cli babel-preset-node6
然后
./node_modules/babel-cli/bin/babel-node.js --presets node6 ./your_script.js
如果您不想输入--presets node6
,可以将其保存.babelrc文件:
{
"presets": [
"node6"
]
}
请参阅https://www.npmjs.com/package/babel-preset-node6和https://babeljs.io/docs/usage/cli/
答案 2 :(得分:26)
babel-core
,babel-polyfill
,babel-preset-es2015
.babelrc
{ "presets": ["es2015"] }
import
语句,请使用其他文件,例如:app.js
,并且您的主条目文件需要babel-core/register
和babel-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
。
答案 3 :(得分:14)
babel-preset-es2015
现已弃用,如果您尝试使用Laurence的解决方案,则会收到警告。
要使用Babel 6.24.1+,请使用babel-preset-env
代替:
npm install babel-preset-env --save-dev
然后将env
添加到.babelrc
:
{
"presets": ["env"]
}
有关详细信息,请参阅the Babel docs。
答案 4 :(得分:5)
您可能正在运行未编译的文件。让我们开始吧!
在您的工作目录中创建:
包含以下对象的package.json文件:
{
"scripts": {
"transpile-es2015": "babel src -d lib"
},
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-preset-latest": "^6.16.0"
}
}
一个名为&#34; .babelrc&#34;的文件按照以下说明操作:
{"presets": ["latest"]}
最后,在src / index.js文件中编写测试代码。在你的情况下:
import co from 'co'.
通过您的控制台:
npm install
npm run transpile-es2015
node lib/index.js
答案 5 :(得分:5)
如果您使用react-native的预设,则接受导入
npm i babel-preset-react-native --save-dev
并将其放入.babelrc文件
{
"presets": ["react-native"]
}
在项目根目录
中答案 6 :(得分:5)
目前的方法是使用:
npm install --save-dev babel-cli babel-preset-env
然后进入.babelrc
{
"presets": ["env"]
}
此安装Babel支持最新版本的js(es2015及更高版本) 看看babeljs
在运行js文件时,不要忘记将babel-node
添加到package.json
内的脚本中,如下所示。
"scripts": {
"test": "mocha",
//Add this line to your scripts
"populate": "node_modules/babel-cli/bin/babel-node.js"
},
现在你可以在终端内npm populate yourfile.js
。
如果您正在运行Windows并且运行错误内部或外部命令无法识别,请使用脚本的节点infront如下
node node_modules/babel-cli/bin/babel-node.js
然后npm run populate
答案 7 :(得分:2)
下一步在package.json文件中添加脚本“start”:“babel-node server.js”
{
"name": "node",
"version": "1.0.0",
"description": "",
"main": "server.js",
"dependencies": {
"body-parser": "^1.18.2",
"express": "^4.16.2",
"lodash": "^4.17.4",
"mongoose": "^5.0.1"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "babel-node server.js"
},
"keywords": [],
"author": "",
"license": "ISC"
}
在root中为babel创建文件 “.babelrc”
{
"presets":[
"es2015",
"stage-0"
]
}
并在终端
中运行npm start答案 8 :(得分:2)
您必须使用 babel-preset-env 和 nodemon 进行热重装。
然后创建具有以下内容的.babelrc文件:
{
"presets": ["env"]
}
最后,在package.json中创建脚本:
"scripts": {
"babel-node": "babel-node --presets=env",
"start": "nodemon --exec npm run babel-node -- ./index.js",
"build": "babel src -d dist"
}
或者仅使用此样板:
答案 9 :(得分:1)
采取以下步骤解决问题:
1)安装 CLI和env预设
$ npm install --save-dev babel-cli babel-preset-env
2)创建 .babelrc 文件
{
"presets": ["env"]
}
3)在 package.json
中配置npm start"scripts": {
"start": "babel-node ./server/app.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
4)然后启动app
$ npm start
答案 10 :(得分:1)
@jovi你需要做的就是像这样添加.babelrc文件:
{
"plugins": [
"transform-strict-mode",
"transform-es2015-modules-commonjs",
"transform-es2015-spread",
"transform-es2015-destructuring",
"transform-es2015-parameters"
]
}
并使用npm安装这些插件作为独立性。
然后再次尝试babel-node ***。js。希望这可以帮到你。
答案 11 :(得分:0)
我已经做了以下事情来克服这个问题(ex.js脚本)
$ cat ex.js
import { Stack } from 'es-collections';
console.log("Successfully Imported");
$ node ex.js
/Users/nsaboo/ex.js:1
(function (exports, require, module, __filename, __dirname) { import { Stack } from 'es-collections';
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:152:10)
at Module._compile (module.js:624:28)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)
at startup (bootstrap_node.js:194:16)
at bootstrap_node.js:618:3
# npm package installation
npm install --save-dev babel-preset-env babel-cli es-collections
# .babelrc setup
$ cat .babelrc
{
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
# execution with node
$ npx babel ex.js --out-file ex-new.js
$ node ex-new.js
Successfully Imported
# or execution with babel-node
$ babel-node ex.js
Successfully Imported
答案 12 :(得分:0)
对于仍然存在相同问题的用户,请按照以下步骤进行修复。
@babel/core @babel/present-env @babel/node
,依此类推... .babelrc
添加到包含以下代码的项目的根目录中。{
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
./node_modules/.bin/babel-node main.js
的本地版本现在,您应该可以使用import/export
语句了,祝您黑客愉快。
答案 13 :(得分:-4)
在您的应用中,您必须声明require()
个模块,而不是使用&#39; import&#39;关键字:
const app = require("example_dependency");
然后,创建一个.babelrc文件:
{
"presets": [
["es2015", { "modules": false }]
]
}
然后,在您的gulpfile中,请务必声明您的require()
模块:
var gulp = require("gulp");