can't import web-worker inside a NodeJS worker thread with no workerData
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 62/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- javascript, node.js
- Área
- backend
Línea de trabajo
Ejecuta primero la reproducción proporcionada con main.js y worker.js; después, inspecciona src/node/index.js alrededor de workerThread en la línea 141 y la ruta de importación relacionada. Se considera terminado cuando importar web-worker dentro de un worker thread de NodeJS no relacionado con workerData undefined deja de lanzar una excepción, mientras el comportamiento propio de worker-thread de la biblioteca permanece intacto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Simply having an import to web-worker inside a NodeJS worker thread with no workerData will result in the following error:
node:internal/event_target:1101
process.nextTick(() => { throw err; });
^
TypeError [Error]: Cannot destructure property 'mod' of 'threads.workerData' as it is undefined.
at workerThread (file:///home/jonas/projects/temp/web-worker-in-worker-test/node_modules/web-worker/src/node/index.js:141:8)
at file:///home/jonas/projects/temp/web-worker-in-worker-test/node_modules/web-worker/src/node/index.js:75:94
at ModuleJob.run (node:internal/modules/esm/module_job:345:25)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:651:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5)
Node.js v22.19.0
Reproduction
main.js
import { Worker } from 'node:worker_threads';
const worker = new Worker('./worker.js', {});
setTimeout(() => worker.terminate(), 1000);
worker.js
import { parentPort } from 'node:worker_threads';
import Worker from 'web-worker';
parentPort.addEventListener('message', e => {
// omitted for brevity, as it is not relevant
});
Notes
I saw that #40 tried to fix this issue already, but didn't fix it completely. The fix assumes workerData is set to a value. If it is undefined, we still run into the same issue as described in #40:
[...] When using this library within a worker thread, the
workerThread()code is executed, rather than themainThread()code which creates the worker polyfill.
[...]
This change executesworkerThread()only if themodproperty is present from theworkerData, indicating that it's being executed from a thread created within this library. Ifmodisn't present, this means that the code is executing within the context of some other worker thread that wasn't created from this library, and it needs to treat the current thread as the main thread by executingmainThread().
- Lenguaje dominante
- JavaScript
- Estrellas
- 1.2k
- Forks
- 57
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de developit/web-worker
-
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
developit/web-worker#55 · 1 comentario · 5 reacciones ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
developit/web-worker#51 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
developit/web-worker#30 · 4 comentarios · 9 reacciones ·
-
Register submodule Abiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
developit/web-worker#27 ·
-
Add support for SharedWorker Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
developit/web-worker#25 ·
Todos los issues de developit/web-worker
Issues similares
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Improve Title Support Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·