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