Repository navigation
some code example outdated in the doc for worker_threads #21714
Copy link
Copy link
Closed
Description
Activity
I am a bit confused. There is no
.once('workerMessage'in the linked doc.This is brand new and experimental (link to docs). It is not outdated and was introduced in Node 10.5.0
@vsemozhetbyt please checkout the url
@mulligan121 thanks, but the codeconst assert = require('assert'); const { Worker, MessageChannel, MessagePort, isMainThread } = require('worker_threads'); if (isMainThread) { const worker = new Worker(__filename); const subChannel = new MessageChannel(); worker.postMessage({ hereIsYourPort: subChannel.port1 }, [subChannel.port1]); subChannel.port2.on('message', (value) => { console.log('received:', value); }); } else { require('worker_threads').once('message', (value) => { assert(value.hereIsYourPort instanceof MessagePort); value.hereIsYourPort.postMessage('the worker is sending this'); value.hereIsYourPort.close(); }); }
still cannot run on 10.6.0, you can make a try, the following is my running result
node --experimental-worker worker.js events.js:167 throw er; // Unhandled 'error' event ^ TypeError: require(...).once is not a function at Object.<anonymous> (/Users/skyitachi/tmp/node/worker.js:13:29) at Module._compile (internal/modules/cjs/loader.js:689:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10) at Module.load (internal/modules/cjs/loader.js:599:32) at tryModuleLoad (internal/modules/cjs/loader.js:538:12) at Function.Module._load (internal/modules/cjs/loader.js:530:3) at Function.Module.runMain (internal/modules/cjs/loader.js:742:12) at MessagePort.port.on (internal/worker.js:425:27) at MessagePort.emit (events.js:182:13) at MessagePort.onmessage (internal/worker.js:66:8) Emitted 'error' event at: at Worker.[kOnErrorMessage] (internal/worker.js:296:10) at Worker.[kOnMessage] (internal/worker.js:306:37) at MessagePort.Worker.(anonymous function).on (internal/worker.js:243:57) at MessagePort.emit (events.js:182:13) at MessagePort.onmessage (internal/worker.js:66:8)it should be
parentPort.oncenotrequire('worker_threads')There seems to be a fixing PR: #21486
@vsemozhetbyt thanks
Reacted by Vse Mozhe ButyYou are missing the
ParentPortin the import.
Metadata
Metadata
Assignees
Labels
No labels
I found in the docs for the Worker following code example is outdated
should use
parentPort.on("message")replaced