1

我正在尝试配置 jest,但面对它无法处理 es6 功能的事实。

为了解决这个问题,我在 package.json 中添加了配置:

"jest": {
    "transform": {
      "^.+\\.jsx?$": "./node_modules/babel-jest"
    },
}

我的 .babelrc 配置:

{
  "presets": [
    "react",
    "es2017",
    "stage-0",
    ["env", {
      "targets": {
        "browsers": ["last 2 versions"]
      },
      "spec": true,
      "modules": false,
      "debug": true
    }],
  ],
  "plugins": [
    ["transform-class-properties", { "spec": true }]
  ]
}

它对我来说看起来很合适,但无论如何都无法使用Test suite failed to runonimport React from 'react';和 on 道具运行

class App extends Component {
   static propTypes = {}
}

目前我不知道出了什么问题,但看起来 stage-x 功能不仅在 env 预设中不可用,而且plugins其他预设都被忽略了。但是 webpack 构建包没有任何错误。所以看起来这是个笑话。

可以帮我看看是怎么回事,好吗?

========== 固定配置.babelrc

{
  "presets": [
    "react",
    "es2015",
    "es2016",
    "es2017",
    "stage-0",
    ["env", {
      "targets": {
        "browsers": ["last 2 versions"]
      },
      "spec": true,
      "modules": false,
      "debug": true
    }],
  ],
  "plugins": [
    ["transform-class-properties", { "spec": true }]
  ]
}

package.json

  "jest": {
    "moduleNameMapper": {
      "config.env": "<rootDir>/config/application.production.js",
      "^.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|po)$": "<rootDir>/__mocks__/fileMock.js",
      "^.+\\.(css|less)$": "<rootDir>/__mocks__/styleMock.js"
    },
    "moduleFileExtensions": [
      "js",
      "jsx",
      "js",
      "json"
    ]
  },
4

1 回答 1

1

预设es2017不包括es2016和。es2015您可以明确包含所有这些,也可以使用preset-env代替。

此外,您不必transform在 jest 配置中显式设置属性。

来自 Jest 文档:

注意:安装 Jest 时会自动安装 babel-jest,如果项目中存在 babel 配置,则会自动转换文件。

于 2017-06-15T23:00:08.847 回答