node.js - Hur man använder WebWorker med ts-node? (utan webpack)
Finns det något sätt att använda ts-node med WebWorkers men utan att använda webpack?
När jag gör:
const worker = new Worker('path-to/workerFile.ts', { // ... });Jag får:
TypeError [ERR_WORKER_UNSUPPORTED_EXTENSION]: Worker-skriptets filändelse måste vara ".js" eller ".mjs". Mottog ".ts" vid new Worker (internal/worker.js:272:15)/....
Några idéer?
Tomer
Svar #1
Du kan skapa en funktion för att göra magin, genom att använda eval-egenskapen på WorkerOption-parametern.
const workerTs = (file: string, wkOpts: WorkerOptions) => {
wkOpts.eval = true;
if (!wkOpts.workerData) {
wkOpts.workerData = {};
}
wkOpts.workerData.__filename = file;
return new Worker(`
const wk = require('worker_threads');
require('ts-node').register();
let file = wk.workerData.__filename;
delete wk.workerData.__filename;
require(file);
`,
wkOpts
);
}
så att du kan skapa tråden så här:
let wk = workerTs('./file.ts', {});
Hoppas det kan hjälpa.
