为什么我在 Jest 中得到 "TextEncoder is not defined"?
Why am I getting "TextEncoder is not defined" in Jest?
在测试使用 TextEncoder 或 TextDecoder 的函数时,我得到:
ReferenceError: TextEncoder is not defined
ReferenceError: TextDecoder is not defined
我正在使用 jsdom,为什么它不起作用?
虽然它应该与 jsdom 捆绑在一起,但它没有与 jsdom 16 捆绑在一起。因此您可以像这样进行 polyfill:
import { TextEncoder, TextDecoder } from 'util'
global.TextEncoder = TextEncoder
global.TextDecoder = TextDecoder
确保你的 whatwg-url
包至少有 ^10.0.0
版本
我也收到了这个错误,我正在使用此处文档中概述的标准 Next.js jest 和 React 测试库测试设置:https://nextjs.org/docs/testing#setting-up-jest-with-the-rust-compiler。
特别是,它使用 testEnvironment: 'jest-environment-jsdom'
jest.config.js
配置文件中的测试环境。
不幸的是,在我的后端 api 路线之一(快速路线)中导入 jsdom 破坏了我的测试,给我 TextEncoder is not defined
错误。
我可以通过将以下 添加到包含损坏测试的文件顶部来修复它 :
/**
* @jest-environment node
*/
// my-broken-node-only-test.js
Read more about this technique via the jest docs.
Lastly, the following issue comment by Jest maintainer Simen helped clarify what was happening in my case: https://github.com/jsdom/jsdom/issues/2524#issuecomment-902027138
在测试使用 TextEncoder 或 TextDecoder 的函数时,我得到:
ReferenceError: TextEncoder is not defined
ReferenceError: TextDecoder is not defined
我正在使用 jsdom,为什么它不起作用?
虽然它应该与 jsdom 捆绑在一起,但它没有与 jsdom 16 捆绑在一起。因此您可以像这样进行 polyfill:
import { TextEncoder, TextDecoder } from 'util'
global.TextEncoder = TextEncoder
global.TextDecoder = TextDecoder
确保你的 whatwg-url
包至少有 ^10.0.0
版本
我也收到了这个错误,我正在使用此处文档中概述的标准 Next.js jest 和 React 测试库测试设置:https://nextjs.org/docs/testing#setting-up-jest-with-the-rust-compiler。
特别是,它使用 testEnvironment: 'jest-environment-jsdom'
jest.config.js
配置文件中的测试环境。
不幸的是,在我的后端 api 路线之一(快速路线)中导入 jsdom 破坏了我的测试,给我 TextEncoder is not defined
错误。
我可以通过将以下 添加到包含损坏测试的文件顶部来修复它 :
/**
* @jest-environment node
*/
// my-broken-node-only-test.js
Read more about this technique via the jest docs.
Lastly, the following issue comment by Jest maintainer Simen helped clarify what was happening in my case: https://github.com/jsdom/jsdom/issues/2524#issuecomment-902027138