首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"ReferenceError: structuredClone未定义“使用带有nodejs和类型记录的jest

"ReferenceError: structuredClone未定义“使用带有nodejs和类型记录的jest
EN

Stack Overflow用户
提问于 2022-09-05 09:42:47
回答 3查看 3.5K关注 0票数 5

我正在使用jest在一个使用类型记录的简单NodeJS应用程序中运行测试。我的测试是抛出一个错误:ReferenceError: structuredClone is not defined

我没有得到任何链接错误,代码编译正常。

代码语言:javascript
运行
复制
  const variableForValidation = structuredClone(variableForValidationUncloned);

package.json:

代码语言:javascript
运行
复制
  "dependencies": {
    ...
  },
  "devDependencies": {
    "@types/jest": "^29.0.0",
    "@types/node": "^18.7.15",
    "@typescript-eslint/eslint-plugin": "^5.36.1",
    "@typescript-eslint/parser": "^5.36.1",
    "eslint": "^8.23.0",
    "jest": "^28.0.1",
    "nodemon": "^2.0.19",
    "serverless-plugin-typescript": "^2.1.2",
    "ts-jest": "^28.0.8",
    "ts-node": "^10.9.1",
    "typescript": "^4.8.2"
  }

这个github问题告诉我,这个问题已经解决了:https://github.com/facebook/jest/issues/12628 --或者我误解了?

我见过类似的堆栈问题,但使用Mocha:未定义不识别structuredClone的摩卡

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-09-08 06:20:09

我不明白,所以我建立了我自己的全球:

代码语言:javascript
运行
复制
// globals.ts
if(!global.structuredClone){
    global.structuredClone = function structuredClone(objectToClone: any) {
          const stringified = JSON.stringify(objectToClone);
          const parsed = JSON.parse(stringified);
          return parsed;
        }
}
代码语言:javascript
运行
复制
// entry point of app, eg index.ts:
import './globals.ts'
// ...

我认为这可能是因为我的tsconfig中的tsconfig在添加structuredClone之前正在将我的类型记录文件转换成javascript/node版本?

票数 2
EN

Stack Overflow用户

发布于 2022-09-13 14:19:30

structuredClone在Node 17中添加

如果您无法更新,JSON hack (stringify然后解析)可以工作,但是可能与您相关的有一些短讯

  • 递归数据结构:当您给递归数据结构时,JSON.stringify()将抛出。在使用链接列表或树时,这种情况很容易发生。
  • 内置类型:如果值包含其他JS内置类型,如Map、Set、Date、RegExp或ArrayBuffer,则将抛出。
  • 函数: JSON.stringify()将悄悄地丢弃函数。

编辑

我最近了解到了json-stringify安全,这有助于循环问题。

票数 5
EN

Stack Overflow用户

发布于 2022-09-12 22:00:52

对于同样的错误,下面的测试文件中的代码为我修复了这个问题。

代码语言:javascript
运行
复制
global.structuredClone = (val) => JSON.parse(JSON.stringify(val))

参考文献

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73607410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档