Jest是否支持ES6导入/导出?

问题描述 投票:22回答:4

如果我使用ES6中的import/export,那么我的所有测试都会失败并出现错误:

意外的保留字

我将我的测试对象转换为使用旧学校IIFY语法,突然我的测试通过了。或者,采用更简单的测试用例:

   var Validation = require('../src/components/validation/validation');//PASS
   //import * as Validation from '../src/components/validation/validation'//FAIL

同样的错误。显然这里导入/导出存在问题。使用ES5语法重写我的代码只是为了让我的测试框架感到满意是不切实际的。

我有巴贝尔开玩笑。我从github问题尝试了各种suggestions。不行,到目前为止。

package.json

 "scripts": {
    "start": "webpack-dev-server",
    "test": "jest"
  },
      "jest": {
        "testPathDirs": [
          "__tests__"
        ],
        "testPathIgnorePatterns": [
          "/node_modules/"
        ],
        "testFileExtensions": ["es6", "js"],
        "moduleFileExtensions": ["js", "json", "es6"]
      },

babelrc

{
  "presets": ["es2015", "react"],
  "plugins": ["transform-decorators-legacy"]
}

有没有解决这个问题?

ecmascript-6 jestjs babel-jest
4个回答
4
投票

这是向你的.babelrc文件中添加stage-0的问题。这是一个例子:

{
  "presets": ["es2015", "react", "stage-0"],
  "plugins": ["transform-decorators-legacy"]
}

12
投票

my answer的另一个问题来看,这可以更简单:


唯一的要求是将您的test环境配置为Babel,并添加es2015转换插件:


步骤1:

test环境添加到项目根目录中的.babelrc

{
  "env": {
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

第2步:

安装es2015转换插件:

npm install --save-dev babel-plugin-transform-es2015-modules-commonjs

就是这样。 Jest将自动从ES模块到CommonJS进行编译,而无需在jest内通知package.json属性的其他选项。


0
投票

除了安装babel-jest(现在默认带有jest),请务必安装regenerator-runtime


-3
投票

我用.default解决了它。

试试var Validation = require('../src/components/validation/validation').default;

© www.soinside.com 2019 - 2024. All rights reserved.