ES2017中使用babel和Jest导入了意外令牌

4zcjmb1e  于 2022-12-16  发布在  Babel
关注(0)|答案(1)|浏览(235)

我尝试在我的项目中使用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

klr1opcd

klr1opcd1#

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!

Migration guide from es2015 to env中所示,它是一款直接替代产品。

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

并将您的.babelrc更改为:

{
  "presets": ["env"]
}

不要将babel-preset-env与Babel的env选项混淆,我已经从当前配置中删除了该选项,因为您在test环境中使用的预设与其他环境完全相同,所以它不会产生任何影响。
您可以将babel-preset-env配置为仅转换目标平台不支持的功能,例如{ "targets": { "node": "current" } }将仅转换您正在运行的节点版本不支持的功能。如果未指定目标,则它将转换所有功能。有关详细信息,请参阅Env preset documentation

  • 注意:在即将发布的Babel版本7中,官方软件包将在名称空间@babel下发布,这意味着babel-preset-env将是@babel/preset-env。*

相关问题