andywer / andywer/threads.js

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

Open
#465 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
3.5k
Forks
173
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.