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

添加Rainbow Kit组件后,Create React App TS项目Jest测试失败求助

问题原因

这个错误的核心原因是:@rainbow-me/rainbowkit 或其依赖的 web3 相关库(如 wagmi、viem)发布的是未经过转译的 ES 模块语法,而 Create React App 默认的 Jest 配置会忽略对 node_modules 目录下文件的转译处理。当 Jest 尝试解析这些库中的 import 语句时,因为没有转译为 CommonJS 模块,就会抛出「Cannot use import statement outside a module」的语法错误。

解决方案

你需要修改 Jest 的配置,让它对指定的第三方库进行转译处理。由于 Create React App 不允许直接修改默认配置,推荐使用 craco(Create React App Configuration Override)来覆盖配置:

  1. 安装 craco
npm install @craco/craco --save-dev
# 或
yarn add @craco/craco --dev
  1. 在项目根目录创建 craco.config.js 文件,添加如下配置:
module.exports = {
  jest: {
    configure: {
      // 告诉 Jest 不要忽略这些库的转译
      transformIgnorePatterns: [
        'node_modules/(?!(@rainbow-me/rainbowkit|wagmi|viem)/)'
      ]
    }
  }
};
  1. 修改 package.json 中的脚本命令,用 craco 替换 react-scripts:
{
  "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  }
}
  1. 重新运行测试命令,错误应该会被解决。

如果上述方法无效,可以尝试以下额外措施:

  • 升级 @rainbow-me/rainbowkit、wagmi、viem 到最新稳定版本,新版本可能已经优化了 Jest 兼容性
  • 如果你的项目使用了 react-app-rewired,可以在 config-overrides.js 中做类似的配置调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:02:28