簡體   English   中英

開玩笑測試'意外的令牌導出'

[英]Jest test 'unexpected token export'

我正在嘗試進行開玩笑的測試。 我收到錯誤SyntaxError: Unexpected token export在行export default configureStore ..特別是在單詞'export'上出現SyntaxError: Unexpected token export 對我來說,這表明redux-mock-store不是由Babel編譯的,那么我如何用Jest強制這樣做? 我正在使用jest-webpack

ContractsActions.test.js

import * as contractsActions from './contractsActions';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';

const middlewares = [thunk]
const mockStore = configureMockStore(middlewares);

describe('async actions', () => {
    const store = mockStore({})
    return store.dispatch(contractsActions.fetchAllContracts()).then(() => {
        //Do something
    })
});

的package.json

...
  "scripts": {
    "test": "jest-webpack",
...
  "jest": {
    "transformIgnorePatterns": [
      "!node_modules/"
    ]
  }
...

webpack.config.js

module: {
    loaders: [
        {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel-loader',
            query:
            {
                presets:['es2015', 'react', 'stage-2']
            }
        }
    ]
},
resolve: {
    extensions: ['.js', '.jsx'],
    alias: {
        react: path.resolve('./node_modules/react'),
    }
},

我最終通過創建一個單獨的.babelrc文件來解決此問題,而不是嘗試在package.json中設置babel配置設置。 我敢肯定,我嘗試過的其他步驟可能有所幫助,但這似乎是解決問題的步驟。

.babelrc

{
  "presets": [["es2015", {"modules": false}]],

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

看一下該package.json中的package.json

https://github.com/arnaudbenard/redux-mock-store/blob/master/package.json

您可以看到它提供了不同的入口點:

"main": "dist/index-cjs.js",
"module": "dist/index-es.js",
"js:next": "dist/index-es.js",
"browser": "dist/index.min.js",

檢查您的node_modules/redux-mock-store是否具有dist文件夾。 如果沒有,請啟動適合您要求的構建(也在package.json列出):

"build:cjs": "babel src --out-file dist/index-cjs.js",
"build:umd": "cross-env BABEL_ENV=es NODE_ENV=development rollup -f umd -c -i src/index.js -o dist/index-umd.js",
"build:umd:min": "cross-env BABEL_ENV=es NODE_ENV=production rollup -f umd -c -i src/index.js -o dist/index-umd.min.js",
"build:es": "cross-env BABEL_ENV=es NODE_ENV=development rollup -f es -c -i src/index.js -o dist/index-es.js",
"build": "npm run build:umd && npm run build:umd:min && npm run build:es && npm run build:cjs",

我不知道這些可構建的版本中哪個適合您,但是我認為其中一個是合適的。 最壞的情況是,啟動npm i && npm run build:cjsnode_modules/redux-mock-store npm i && npm run build:cjs並訴諸CommonJS require語法:

const configureMockStore = require('redux-mock-store/dist/index-cjs.js'); 

真的希望這能解決您的問題,至少這些是我會嘗試的步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM