[英]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:cjs
在node_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.