node.js - structuredClone არ არის ხელმისაწვდომი გლობალურ ობიექტზე nodejs აპლიკაციაში
structuredClone ჩემს NodeJS აპლიკაციაში არ მუშაობს. როცა ვცდილობ მისი გამოყენებას, ვიღებ შეცდომას: structuredClone არაა განსაზღვრული nodejs-ში.
თუ მე შევქმნი მარტივ ფაილს და გავუშვებ:
console.log({
globals: Object.keys(global),
structuredClone: global.structuredClone
});
მე ვიღებ:
{
globals: [
'global',
'clearInterval',
'clearTimeout',
'setInterval',
'setTimeout',
'queueMicrotask',
'performance',
'clearImmediate',
'setImmediate'
],
structuredClone: undefined
}
მე განვაახლე ჩემი node მოდულები ამ კითხვაში/პასუხების მიხედვით. ჩემს package.json-ში შედის:
"dependencies": {
"ajv-draft-04": "^1.0.0",
"ajv-formats": "^2.1.1",
"aws-appsync": "^4.1.7",
"aws-sdk": "^2.1205.0",
"dotenv": "^16.0.2",
"fs": "^0.0.1-security",
"graphql-tag": "^2.12.6",
"node-fetch": "^2.6.7"
},
"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"
}
tsconfig.json:
{
"compilerOptions": {
"preserveConstEnums": true,
"strictNullChecks": true,
"sourceMap": true,
"allowJs": true,
"target": "es5",
"outDir": ".build",
"moduleResolution": "node",
"lib": ["es2015"],
"rootDir": "./"
}
}
პასუხი #1
არ ვხედავ მიზეზს, რატომ უნდა იყოს ის ხელმისაწვდომი global ობიექტზე. როგორც მე ვხვდები, შეგიძლია ფუნქციის პირდაპირ გამოყენება:
const obj = structuredClone(anotherObject)
ნახეთ https://developer.mozilla.org/en-US/docs/Web/API/structuredClone
გარდა ამისა, გაითვალისწინეთ, რომ თქვენ უნდა გამოიყენოთ Node.js 17 ან უფრო მაღლა.
პასუხი #2
მე მქონდა იგივე პრობლემა და (როგორც robbash თქვა) ეს იმიტომ მოხდა, რომ მე ვსვამდი node.js-ის ძველ ვერსიას. structuredClone() ხელმისაწვდომია მხოლოდ ვერსიიდან 17. მე გავაახლებინე და ახლა მუშაობს.
