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

Node 20+Jest环境下使用msw出现ReferenceError: Response未定义

解决MSW + Jest中ReferenceError: Response is not defined的问题

原因

Node.js 20原生支持fetch,但Jest测试环境默认不会将Response、Request这类Web API挂载到global对象,而MSW v2在Node环境下依赖这些全局可用的API。你之前仅polyfill fetch的操作不完整,无法覆盖所有依赖项。

解决方法

方法1:手动挂载Web API到全局

修改setupTests.js,在文件顶部添加以下代码,把Node内置的Web API绑定到global:

import { fetch, Headers, Request, Response } from 'node-fetch';

Object.assign(global, {
  fetch,
  Headers,
  Request,
  Response,
});

如果项目未安装node-fetch,先执行安装命令:

npm install node-fetch --save-dev

方法2:配置Jest自动暴露Web API

在jest.config.json(或jest.config.js)中添加testEnvironmentOptions配置:

{
  "testEnvironment": "node",
  "testEnvironmentOptions": {
    "customExportConditions": ["node", "node-addons"]
  }
}

该配置会让Jest自动使用Node原生的Web API实现,无需手动polyfill。

方法3:确认MSW导入路径(必查)

确保server.js中导入的是Node环境的MSW包,你当前的导入是正确的:

import { setupServer } from "msw/node";

若误导入浏览器端的msw包,也会触发类似环境依赖报错。

验证

修改完成后重新运行测试,ReferenceError: Response is not defined错误应会消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:06:06