Имам приложение и то използва уебработници, за да помогне за извършване на някои изчисления с други работници. Грешката, която хвърля, по същество се оплаква, че данните, които очаква, не са там, тъй като изчисленията не са изчислени.
Изчисленията се извършват локално с работещи уебработници, но в prod съм почти без идеи защо не работи.
Едно нещо, което трябва да отбележа е, че тъй като имам нужда от импортиран контекст на определени функции (дефинирани извън работния контекст), последвах съвета, предложен тук: ( Създаване на уеб работник в React ) и първо го нанизвам и първо го превръщам в петно.
`
export const buildBlobUrlFromCode = (code) => {
// returns a DOMString that links context to the code within the blob
code = code.substring(code.indexOf("{") + 1, code.lastIndexOf("}"));
const blob = new Blob([code], { type: "application/javascript" });
return URL.createObjectURL(blob);
}
export class WebWorker {
constructor(worker) {
let code = worker.toString();
// const blobUrl = strDecoratedBuildBlobUrlFromCode(code);
const blobUrl = buildBlobUrlFromCode(code);
return new Worker(blobUrl);
}
}
и как използвам горния код е: const workerInstance = new WebWorker(MyWorker);
където MyWorker
е fn, експортиран с дефиниран onmessage
и всички операции, дефинирани вътре.
Добавих някои регистрационни файлове и по същество прекъсването на кода, когато започна да стартирам изчислението с: workerInstance.postMessage([data]);
Също така трябва да се отбележи, че използвам react-create-app, за да създам моето приложение и все още не съм го извадил, така че конфигурациите на webpack са недокоснати.
Също така -- изходните файлове за тези работници са напълно празни при внедряване, но се попълват локално (както в мога да видя действителния код във файловете worker.js)