2017-04-17 80 views
7

我開始一個新的反應項目,並使用Jest作爲測試平臺。儘管文檔,博客和許多其他資源如stackoverflow,我總是有一個「意外的令牌導入」錯誤可能與babel問題有關,但我的conf似乎沒有問題。歡迎任何幫助。Jest,意外的令牌導入

My Jest conf(在package.json中)。我的package.json有一個像巴貝爾,笑話,巴貝爾預設-ES2015,巴貝爾預設-反應等

"jest": { 
    "testMatch": [ 
     "**/?(*.)spec.js?(x)" 
    ], 
    "moduleDirectories": [ 
     "src", 
     "node_modules" 
    ], 
    "moduleNameMapper": { 
     "^lib/(.*)$": "<rootDir>/src/lib/$1", 
     "^components/(.*)": "<rootDir>/src/components/$1", 
    }, 
    "transform": { 
     "^.+\\.jsx?$": "babel-jest" 
    } 

我.babelrc的conf的依賴關係:

{ 
    "presets": [ 
    ["es2015", { "modules": false }], 
    "react" 
    ], 
    "plugins": [ 
    ["react-hot-loader/babel"], 
    ["transform-object-rest-spread", { "useBuiltIns": true }], 
    ["transform-runtime"] 
    ], 
    "env": { 
     "test": { 
     "presets": ["es2015", "react"] 
     } 
    } 
} 

我的spec文件:

import React from 'react'; 
import Radio from 'components/ui/radio'; 
... 

和組件/ UI /無線電(進口引發錯誤在第一行):

import Container from './container.jsx'; 
... 

我的webpack有兩個名爲lib和components的別名(在jest中定義爲moduleNameMapper)。

... 
resolve: { 
    mainFiles: ['index', 'main'], 
    extensions: ['.js', '.jsx'], 
    alias: { 
    lib: helpers.getPath('src/lib/'), 
    components: helpers.getPath('src/components/'), 
    }, 
    modules: [ 
    helpers.getPath('src'), 
    helpers.getPath('node_modules'), 
    ], 
}, 
... 

回答

3

我有一個非常類似的問題,最後我解決它在運行時開玩笑僅僅使用--no緩存。

我也有我的package.json依賴像巴貝爾,笑話,巴貝爾預設-ES2015,巴貝爾預設-反應等

jest --no-cache 
+0

+1。您可能還想考慮簡單的做法:'npm我babel-preset-env --save-dev'並將''env「'添加到package.json中的babel預設列表中。然後你可以安裝你需要的任何預設,而不必將它們全部添加到預設列表中。 – Jonathan

+0

我有同樣的問題,'jest --no-cache'沒有解決它,但是它做了什麼/修復/刪除了我的node_modules文件夾和我的package-lock.json文件,然後重新運行'npm i '。我認爲這是因爲我在完成原始安裝時激活了不同版本的節點。 (我用nvm切換。)檢查你的節點版本! – Jonathan