Javascript &引用;意外令牌导入“;在诺德和巴贝尔?
在js文件中,我使用import to而不是requireJavascript &引用;意外令牌导入“;在诺德和巴贝尔?,javascript,node.js,ecmascript-6,babeljs,package.json,Javascript,Node.js,Ecmascript 6,Babeljs,Package.json,在js文件中,我使用import to而不是require import co from 'co'; 并且尝试直接由nodejs运行它,因为它说import是“shipping features”,并且支持没有任何运行时标志(),但是我得到了一个错误 import co from 'co'; ^^^^^^ SyntaxError: Unexpected token import 然后我试着用巴贝尔 npm install -g babel-core npm install -g babel
import co from 'co';
并且尝试直接由nodejs运行它,因为它说import是“shipping features”,并且支持没有任何运行时标志(),但是我得到了一个错误
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
仍然有相同的错误,意外的令牌导入
我怎样才能摆脱它呢?来自巴别塔6发行说明: 由于Babel专注于成为JavaScript工具的平台,而不是ES2015 transpiler,我们决定让所有插件都加入。这意味着当您安装Babel时,默认情况下它将不再传输您的ES2015代码 在我的设置中,我安装了es2015预设
npm install --save-dev babel-preset-es2015
还是用纱线
yarn add babel-preset-es2015 --dev
并在my.babelrc中启用了预设
{
"presets": ["es2015"]
}
可能是您正在运行未编译的文件。让我们从头开始吧 在工作目录中创建:
- 两个文件夹。一个用于预编译的es2015代码。另一个是巴贝尔的 输出。我们将分别将它们命名为“src”和“lib”
- 包含以下对象的package.json文件:
{ "scripts": { "transpile-es2015": "babel src -d lib" }, "devDependencies": { "babel-cli": "^6.18.0", "babel-preset-latest": "^6.16.0" } }
- 一个名为“.babelrc”的文件,其中包含以下说明:
{“预设”:[“最新”]}
- 最后,在src/index.js文件中编写测试代码。就你而言:
从“co”导入co.
- 安装您的软件包:
npm安装
- 使用-d(aka--out dir)标志将源目录传输到输出目录,该标志已在我们的package.json中指定:
npm运行Transfile-es2015
- 从输出目录运行代码!
node lib/index.js
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"
]
}
看到和
babel-core
,babel-polyfill
,babel-preset-es2015
.babelrc
,内容为:{“预设”:[“es2015”]}
import
语句放在主条目文件中,使用另一个文件,例如:app.js
,您的主条目文件应该需要babel core/register
和babel polyfill
,以使babel首先独立工作。然后您可以要求app.js
whereimport
语句require('babel-core/register');
require('babel-polyfill');
require('./app');
import co from 'co';
{
"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"
}
app.js
require('babel-core/register');
require('babel-polyfill');
require('./app');
import co from 'co';
{
"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"
}
它应该与应用程序中的
node index.js
一起使用,您必须声明require()
模块,而不是使用“导入”关键字:
const app = require("example_dependency");
然后,创建一个.babelrc文件:
{
"presets": [
["es2015", { "modules": false }]
]
}
然后,在gulpfile中,确保声明require()
模块:
var gulp = require("gulp");
如果将预设用于react native,它将接受导入
npm i babel-preset-react-native --save-dev
并将其放入.babelrc文件中
{
"presets": ["react-native"]
}
在项目根目录中
巴贝尔-preset-es2015
现在已被弃用,如果您尝试使用劳伦斯的解决方案,您将收到警告
要使用Babel 6.24.1+,请改用Babel预设环境
:
npm install babel-preset-env --save-dev
然后将env
添加到.babelrc
中的预设中:
{
"presets": ["env"]
}
有关更多信息,请参阅。当前的方法是使用:
npm安装--保存dev babel cli babel preset env
然后在.babelrc
{
"presets": ["env"]
}
此安装支持最新版本的js(es2015及以后版本)
看看babeljs
不要忘记在package.json中添加babel节点
,在运行js文件时使用,如下所示
"scripts": {
"test": "mocha",
//Add this line to your scripts
"populate": "node_modules/babel-cli/bin/babel-node.js"
},
现在您可以npm在终端内部填充文件.js
如果您正在运行windows,并且运行错误“无法识别内部或外部命令”,请使用脚本前面的节点,如下所示
node node\u模块/babel cli/bin/babel node.js
然后npm run populate
我已经做了以下工作来克服这个问题(ex.js脚本)
问题
解决方案
- 安装-->“npm i--保存开发版本babel cli babel-preset-es2015
巴别塔-预设-舞台-0“
package.json文件加载项脚本中的下一个“start”:“babel node server.js”
并在根目录中为babel创建文件
“.LRC”
并在终端运行npm start包括以下步骤来解决问题:
1) 安装CLI和环境预设
$ 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) 然后启动应用程序
$ npm start
@jovi您只需添加.babelrc文件,如下所示:
{
"plugins": [
"transform-strict-mode",
"transform-es2015-modules-commonjs",
"transform-es2015-spread",
"transform-es2015-destructuring",
"transform-es2015-parameters"
]
}
并将这些插件作为npm的DevDependence安装
然后再次尝试babel节点***.js。希望这能对您有所帮助。您必须使用babel预设环境和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"
}
或者使用这个样板:
回答得好。不幸的是,您仍然需要使用require(),无法对npm包使用导入。我将babel节点
与es2015
和react
预设一起使用。同样的错误,不起作用。是的,这是需要的,但它不能使导入工作。对我来说,这是一个简单的修复。我被困在tunnel vision中,试图将代码从一个react/babel项目改编成另一个es5项目,同时升级到es6语法。在脚本下的package.json中,我忘了将“node run”替换为“babel node run.js”。是的,我觉得很害羞。:)JS生态系统就是这样easy@FelixKling当前位置虽然链接问题的答案肯定也回答了这个问题,但很难将这个问题视为与那个问题的重复。在任何情况下,我很高兴在这里看到这一个,因为谷歌直接把我带到这里,因为所描述的语法错误与我所说的完全匹配