我正在尝试生成线程(使用新的Nodejs模块“worker_threads”),并向它们中的每一个传递一个复杂对象,该对象是Puppeteer browser.newPage()实例的“page”对象。我尝试使用workerData和MessageChannels - 根据文档:
port.postMessage:将JavaScript值发送到此通道的接收端。 值将以与HTML结构化克隆算法兼容的方式传输。 特别是,它可能包含循环引用和像类型化数组之类的对象,JSON API无法字符串化。
但我总是收到错误:
(node:7133)UnhandledPromiseRejectionWarning:DataCloneError:function(){ [native code] }无法被克隆。 在Worker.postMessage(internal/worker.js:378:23)
我也尝试了stringify和parse,但页面对象还包含函数,我无法从线程上下文中求值(我也想避免使用eval())。
问题是:如何将类似于Puppeteer browser.newPage()实例的复杂对象传递给使用worker_threads在Nodejs中生成的线程?