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

Jest报错TypeError: Cannot read property of undefined:React类dotnetify导入问题

嘿,我来帮你搞定这个Jest识别dotnetify ES模块导入的问题!其实核心就是让Jest正确处理ES模块语法,同时适配dotnetify的模块结构,下面是具体的配置方案:

解决方案步骤

1. 先确认Jest版本与ES模块支持

Jest 28及以上版本对ES模块的支持更成熟,如果你的Jest版本偏低,建议先升级:

npm install jest@latest --save-dev

2. 配置Jest转译ES模块

首先安装必要的Babel依赖,用来转译React和ES模块代码:

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

然后在项目根目录创建或修改jest.config.js文件,添加以下配置:

module.exports = {
  // 用babel-jest转译JS/JSX文件
  transform: {
    '^.+\\.(js|jsx)$': 'babel-jest',
  },
  // 映射dotnetify到它的UMD/CommonJS分发文件,确保Jest能正确解析
  moduleNameMapper: {
    '^dotnetify$': '<rootDir>/node_modules/dotnetify/dist/dotnetify.js'
  },
  // React测试需要jsdom环境来模拟浏览器
  testEnvironment: 'jsdom'
};

同时创建.babelrc文件配置Babel规则:

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ]
}

3. 保持ES模块导入方式

不用再改用require啦,继续用原来的导入语句:

import dotnetify from "dotnetify";

4. 额外排查小技巧

如果配置后还是报错,可以试试这些操作:

  • 删除node_modules和package-lock.json,重新安装依赖:
rm -rf node_modules package-lock.json
npm install
  • 确认测试文件的扩展名是.test.js或.test.jsx,并且Jest的testMatch配置能匹配到这些文件(默认配置一般没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:13