2017-06-15 54 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