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

cub*_*b33 15 javascript worker-thread node.js

我正在尝试生成线程(使用新的 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 产生的线程?

det*_*tch 3

相信答案基本上是“不”。

你能改变你正在传递的东西,以便你可以在另一边“重建”它吗?

该模型类似于调用另一台服务器 - 您必须对所需的所有内容进行编码,然后在另一端对其进行重新修改。