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

导入Jest致应用崩溃的原因排查与正确导入方式(含Mocked)

问题分析与解决方案

崩溃原因

你在浏览器运行的应用业务代码中直接导入了ts-jest或@jest/globals这类jest相关包,这些工具依赖Node.js环境的process全局变量,但浏览器环境不存在这个变量,所以运行时抛出ReferenceError,导致应用崩溃。而且jest本质是测试工具,仅用于测试环境,不该被打包进浏览器运行的代码里。

正确的jest导入方式

  • 仅在测试文件(命名通常为xxx.test.ts或xxx.spec.ts)中使用jest相关工具
  • 测试文件内,推荐从@jest/globals导入jest、mocked,或者直接使用jest自动挂载的全局jest对象
  • 配合ts-jest时,确保tsconfig.json的compilerOptions.types数组包含jest,让TypeScript识别jest的全局类型:
    {
      "compilerOptions": {
        "types": ["jest"]
      }
    }
    

实现mocked对象正常使用且不崩溃的方案

  1. 隔离测试代码:把所有jest相关的导入、mocked调用等逻辑,全部移到测试文件中,绝对不要放到应用业务代码里
  2. 应用级模拟替代jest mock:如果需要在开发/生产环境模拟模块(比如API请求),不要用jest的mocked,改用适合浏览器环境的方案:
    • 用Mock Service Worker(MSW)模拟后端接口
    • 自己编写模拟函数或类,替代第三方依赖
  3. 检查打包配置:确保打包工具(webpack/Vite等)不会把测试相关代码打包进产物。比如Vite默认会排除node_modules中的测试工具,但如果你的业务代码直接引用了jest包,还是会被打包,所以隔离测试代码是核心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:45:28