Skip to content

"Error: Cannot find module '/engine-learn/Worker'" or "Error: expose() called in the master thread." #465

Open
@appocalypseltd

Description

@appocalypseltd

My Nx setup using threads.js ain't working...I'm getting either this error:

Error: Cannot find module 'engine-learn/Worker'

...when my setup looks like this:

// index.ts
export * from './EngineLearn';

// Worker.ts
import { expose } from 'threads/worker';

const trainModel = async () => {
  console.log("In trainModel");
};

expose(trainModel);

// EngineLearn.ts
import { Pool, spawn, Worker } from 'threads';

export class EngineLearn {
  trainModels = async () => {
    console.log('Hello');
    const pool = Pool(() => spawn(new Worker('./Worker')));
  };
}

...or, if I export Worker.ts in my root index.ts, like this:

// index.ts
export * from './EngineLearn';
export * from './Worker';

...I get:

"Error: expose() called in the master thread."

It seems the module is not included in the build if I export it in index.ts, and so cannot be found; but, if I do, expose() is immediately invokes and it gives rise to the other error.

What to do 🤷🏻

I am using the @nrwl/esbuild:esbuild build executor.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions