Я не слишком увлечен React, поэтому не могу сказать, является ли модуль-Worker лучшим способом для go (возможно, worker-loader будет лучшим решением), но Что касается последней полученной ошибки, то это потому, что вы не установили type
вашего BLOB-объекта при его создании.
В этом случае это имеет значение, поскольку оно определяет тип содержимого обозревателя. устанавливается при обслуживании API-интерфейсов, которые его выбирают.
Здесь Firefox немного более мягок и как-то позволяет это, но Chrome требователен и требует, чтобы вы установили эту опцию type
на один из множества javascript MIME-типы.
const script_content = `postMessage('running');`;
// this one will fail in Chrome
const blob1 = new Blob([script_content]); // no type option
const worker1 = new Worker(URL.createObjectURL(blob1), { type: 'module'});
worker1.onerror = (evt) => console.log( 'worker-1 failed' );
worker1.onmessage = (evt) => console.log( 'worker-1', evt.data );
// this one works in Chrome
const blob2 = new Blob([script_content], { type: "text/javascript" });
const worker2 = new Worker(URL.createObjectURL(blob2), { type: 'module'});
worker2.onerror = (evt) => console.log( 'worker-2 failed' );
worker2.onmessage = (evt) => console.log( 'worker-2', evt.data );
Но теперь, когда эта ошибка исправлена, вы столкнетесь с другой ошибкой, потому что формат import lib from "libraryname"
все еще не поддерживается в браузерах, поэтому вам придется замените "libraryname"
на путь к вашему фактическому файлу сценария, учитывая, что он будет относительно базового URI вашего работника, то есть, вероятно, источника вашей главной страницы.