我尝试在我的项目中使用Jest与bablejs和ES2017,根据Jest入门页面和Bablejs config for ES2017这是我的.babelrc
文件:
{
"presets": ["es2017"],
"env": {
"test": {
"presets": ["es2017"]
}
}
}
我的package.json
是:
{
"name": "",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest"
},
"repository": {
"type": "git",
"url": ""
},
"author": "",
"license": "ISC",
"bugs": {
"url": ""
},
"homepage": "",
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.0",
"babel-jest": "^21.2.0",
"babel-polyfill": "^6.26.0",
"babel-preset-es2017": "^6.24.1",
"jest": "^21.2.1"
}
}
当我输入npm test
运行我的所有测试与jest我得到这些错误:
){import StateList from './StateList';
^^^^^^
SyntaxError: Unexpected token import
意思是它不知道import
。
1条答案
按热度按时间klr1opcd1#
babel-preset-es2017
不转换import
语句,因为它只包含以下插件:syntax-trailing-function-commas
和transform-async-to-generator
。安装
babel-preset-es2017
时,您还会收到一个警告,指出它已被弃用,而支持babel-preset-env
,其中包含了es201x
预设所包含的所有内容以及更多内容。如Migration guide from es2015 to env中所示,它是一款直接替代产品。
并将您的
.babelrc
更改为:不要将
babel-preset-env
与Babel的env
选项混淆,我已经从当前配置中删除了该选项,因为您在test
环境中使用的预设与其他环境完全相同,所以它不会产生任何影响。您可以将
babel-preset-env
配置为仅转换目标平台不支持的功能,例如{ "targets": { "node": "current" } }
将仅转换您正在运行的节点版本不支持的功能。如果未指定目标,则它将转换所有功能。有关详细信息,请参阅Env preset documentation。@babel
下发布,这意味着babel-preset-env
将是@babel/preset-env
。*