我正在使用 Jest 来运行我的测试。从 v12 升级到 Node v16.13.0(LTS 版本)后,出现以下错误:
ReferenceError:未定义 AbortController
而使用 Node 手动运行代码效果很好。
在升级到 v16 的过程中,我将所有软件包升级到了最新版本。我一直在为模拟 AbortController 使用 polyfill,因为我在升级之前使用的是 Node v12。Node v16 带有它自己的 AbortController,所以我删除了这个 polyfill。我正在使用 TypeScript 4.4.4,以防相关(这不是 TypeScript 错误)。
使用 Polyfill 时不会出现此错误。
与我使用 Node.js 手动运行应用程序时相比,Jest 运行时似乎没有使用相同的环境。
我尝试了以下方法:
console.log(process.env)在测试开始时运行并检查正在使用的 Node 版本 -> 对 Node 的所有引用都具有相同的版本:16.13.0。我已经研究了几个小时了,似乎互联网上没有人遇到这个问题。有谁知道发生了什么事吗?
经过更多挖掘后,我“解决”了这个问题。只需删除 "testEnvironment": "node"(内部"jest": {...}从 package.json 中
我偶然发现了设置 Jest 测试环境的选项(https://jestjs.io/docs/configuration#testenvironment-string),并且我注意到我的 package.json 已经包含该设置(在 下"jest": {...})并且它被设置为:"testEnvironment": "node":然而,根据文档,这是默认的,所以我没有想到任何事情。
几个小时后,在绝望中我决定将其删除......瞧\xc3\xa0,它解决了问题。
\n显然设置"testEnvironment"配置设置为其默认值会改变 Jest 的运行环境,这对我来说非常违反直觉且令人困惑。
编辑:这是由 Create React App 引起的。我将只安装了 jest 的空存储库与 CRA 存储库进行了比较,后者附带了 jest。将测试命令更改为jest并添加上述配置会触发问题。如果您使用默认react-scripts test命令,CRA 将不会运行测试并给您一个大红色错误,表明他们不支持"testEnvironment"设置。
| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |