小编cub*_*b33的帖子

nodejs - DataCloneError: function () { [native code] } 无法克隆

我正在尝试生成线程(使用新的 Nodejs 模块“worker_threads”)并向每个线程传递一个复杂对象,该对象是 Puppeteer browser.newPage() 实例的“页面”对象。我尝试使用 workerData 和 MessageChannels - 来自文档:

port.postMessage:向该通道的接收端发送一个 JavaScript 值。值将以与 HTML 结构化克隆算法兼容的方式传输。特别是,它可能包含循环引用和对象,如 JSON API 无法字符串化的类型化数组。

但我总是收到错误:

(node:7133) UnhandledPromiseRejectionWarning: DataCloneError: function () { [native code] } 无法克隆。在 Worker.postMessage (internal/worker.js:378:23)

我还尝试将它字符串化并解析它,但页面对象还包含我无法从线程上下文中评估的函数(我也想避免使用 eval())。

问题是:如何将像 Puppeteer browser.newPage() 实例这样的复杂对象传递给 Nodejs 中使用 worker_threads 产生的线程?

javascript worker-thread node.js

15
推荐指数
1
解决办法
5056
查看次数

标签 统计

javascript ×1

node.js ×1

worker-thread ×1