【问题标题】:Jest test 'unexpected token export'开玩笑测试“意外的令牌导出”
【发布时间】:2018-03-01 23:18:23
【问题描述】:

我正在尝试运行我的笑话测试。我在export default configureStore 行收到错误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'),
    }
},

【问题讨论】:

  • 为了测试,注释掉exclude: /node_modules/,
  • @connexo -> 这次遇到了不同的错误。 “webpack_amd_options”未定义
  • 很遗憾看到我的回答似乎没有为您提供任何有用的信息。

标签: javascript reactjs webpack babeljs jestjs


【解决方案1】:

我最终通过创建一个单独的 .babelrc 文件解决了这个问题,而不是尝试在 package.json 中设置 babel 配置设置。我确定我尝试过的其他步骤可能有所帮助,但这似乎是修复它的步骤。

.babelrc

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

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

【讨论】:

    【解决方案2】:

    看看那个包中的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",
    

    我不知道哪些可构建的版本适合您,但我认为其中一个会是。在最坏的情况下,在 node_modules/redux-mock-store 中启动 npm i && npm run build:cjs 并使用 CommonJS require 语法:

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

    真的希望这能解决你的问题,至少这些是我会尝试的步骤。

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 2017-07-04
      • 2021-11-12
      • 2019-07-04
      相关资源
      最近更新 更多