andywer / threads.js

🧵 Make web workers & worker threads as simple as a function call.
https://threads.js.org/
MIT License
3.04k stars 161 forks source link

v 1.7.0 isWorkerRuntime not available on ESM #452

Open beckend opened 1 year ago

beckend commented 1 year ago
{
  "threads": "^1.7.0",
}
❯ cat node_modules/threads/worker.mjs
import WorkerContext from "./dist/worker/index.js"

export const expose = WorkerContext.expose
export const registerSerializer = WorkerContext.registerSerializer
export const Transfer = WorkerContext.Transfer
import { expose, isWorkerRuntime } from 'threads/worker';
                 ^^^^^^^^^^^^^^^
SyntaxError: The requested module 'threads/worker' does not provide an export named 'isWorkerRuntime'
    at ModuleJob._instantiate (node:internal/modules/esm/module_job:123:21)
    at ModuleJob.run (node:internal/modules/esm/module_job:189:5)
    at async Promise.all (index 0)
    at ESMLoader.import (node:internal/modules/esm/loader:530:24)
    at loadESM (node:internal/process/esm_loader:91:5)
    at handleMainPromise (node:internal/modules/run_main:65:12)
noramass commented 1 year ago

I experience the same issue. additionally if i try to run the expose method in the worker script without importing it in the main thread, i get this error:

node:internal/event_target:1010
  process.nextTick(() => { throw err; });

Error: expose() called in the master thread.

I experience the same issue with cjs if i put "type": "module" in my package.json

it is impossible for me to remove "type": "module" from my package.json because a plugin in my build chain relies on it so i am at the moment unable to use this package.

janiago commented 1 year ago

This is fixed in master branch by https://github.com/andywer/threads.js/pull/419 But we haven't see a new release includes this fix yet. What time is the 1.7.1 release planed to?