在ES2017与巴贝尔和JEST意外令牌导入

我尝试在我的项目中使用Jest和bablejs和ES2017,根据Jest Getting Started页面以及ES2017的Bablejsconfiguration,这是我的.babelrc文件:

 { "presets": ["es2017"], "env": { "test": { "presets": ["es2017"] } } } 

和我的包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运行我所有的testing与笑话我得到这些错误:

  ){import StateList from './StateList'; ^^^^^^ SyntaxError: Unexpected token import 

这意味着它不知道import ,我searchSF,但没有任何解决scheme解决我的问题

babel-preset-es2017不转换import语句,因为它只包含插件: syntax-trailing-function-commastransform-async-to-generator

在安装babel-preset-es2017你也会得到一个警告,表示它已经被弃用,而不是使用babel-preset-env ,它包含了es201x预置包含的所有内容。

 warning babel-preset-es2017@6.24.1: 🙌 Thanks for using Babel: we recommend using babel-preset-env now: please read babeljs.io/env to update! 

如从es2015到env的迁移指南所示,这是一个直接replace。

 npm install --save-dev babel-preset-env 

并将您的.babelrc更改为:

 { "presets": ["env"] } 

不要将babel-preset-env和Babel的env选项混淆,这个选项已经从你当前的configuration中删除了,因为你使用的test环境和其他的预置完全相同,所以没有任何影响。

您可以将babel-preset-envconfiguration为仅转换目标平台所不支持的function,例如{ "targets": { "node": "current" } }将只转换不支持的function您正在运行的节点版本。 如果没有指定目标,它将改变一切。 有关详细信息,请参阅Env预设文档 。

注意:即将推出的Babel版本7,官方软件包将在@babel命名空间下@babel ,这意味着babel-preset-env将会是@babel/preset-env