You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest测试报错'unexpected token export',如何强制转译redux-mock-store?

解决Jest中redux-mock-store的Unexpected token export错误

这个问题确实是因为Jest默认不会转译node_modules目录下的包,而redux-mock-store可能是以ES模块(使用export语法)发布的,你的测试环境没对它做转译导致的。在jest-webpack场景下,你可以通过以下配置强制Jest转译这个包:

1. 修改package.json中的Jest配置

在package.json里添加或更新Jest的配置项,重点调整transformIgnorePatterns,把redux-mock-store排除在忽略转译的列表之外:

{
  "jest": {
    "transform": {
      "^.+\\.(js|jsx)$": "babel-jest"
    },
    "transformIgnorePatterns": [
      "/node_modules/(?!redux-mock-store)/"
    ]
  }
}

配置说明:

  • transform:指定用babel-jest转译所有.js/.jsx文件,确保你的Babel配置(比如babel.config.js或.babelrc)已经包含了@babel/preset-env来处理ES模块转译。
  • transformIgnorePatterns:默认Jest会忽略所有node_modules里的文件,这里的(?!redux-mock-store)是负向预查,意思是:除了redux-mock-store之外,其他node_modules下的包都跳过转译。这样Jest就会对redux-mock-store执行Babel转译,把ES模块语法转换成它能识别的CommonJS。

2. 确保Babel配置正确

如果还没有Babel配置文件,创建一个babel.config.js放在项目根目录:

module.exports = {
  presets: [
    ['@babel/preset-env', { targets: { node: 'current' } }]
  ]
};

这个配置会告诉Babel针对当前Node.js版本转译代码,适配Jest的运行环境。

3. 检查依赖是否齐全

确保你已经安装了必要的开发依赖:

npm install --save-dev babel-jest @babel/core @babel/preset-env

4. 关于webpack.config.js的注意事项

因为jest-webpack会复用Webpack的配置,但Jest的转译逻辑主要还是靠自身的transform配置。如果你的Webpack里已经用babel-loader处理了ES模块,那不需要额外修改Webpack配置,只要Jest的配置正确即可。

验证测试

现在重新运行你的ContractsActions.test.js测试,应该就不会再出现Unexpected token export的错误了。如果还是有问题,可以检查测试文件中的导入语句是否正确,比如:

import configureStore from 'redux-mock-store';

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 06:52:51