2017-06-15 68 views
1

我正在尝试配置jest,但是面对它无法处理es6功能的事实。Jest,env预设和stage-0功能

为了解决这个问题我已经添加配置的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 run上运行import React from 'react';及道具中

class App extends Component { 
    static propTypes = {} 
} 

此刻我h我们不知道哪里出了问题,但它看起来像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" 
    ] 
    }, 

回答

1

es2017预设不包括es2016es2015。 您可以明确包含所有这些参数,也可以使用preset-env

另外,您不必在明确配置中明确设置transform属性。

from Jest documentation:

注意:在安装时玩笑巴贝尔,笑话会自动安装,并且如果你的项目中存在一个通天的配置会自动转换文件。

+0

好了,我已删除了,但还是开玩笑上失败'进口从“反应”反应;' – SilentImp

+0

我傻,我怎么错过呢..你应该使用[预设ENV(https://开头babeljs.io/docs/plugins/preset-env/),因为'es2017'不包含'es2016'和'es2015'。我将修复答案 – Nataly87

+0

但实际上我在上面的配置中有'preset-env' ... 但是看起来你是对的,我已经将配置更改为上面的[package.json]和[.babelrc]。我已将它们放入原始文章中,因为它们不适合评论大小。 但我觉得我的.babelrc目前有点奇怪。 – SilentImp