如何在 CRACO Webpack 应用程序中添加对 Web Worker 的支持?

Sen*_*ama 5 javascript web-worker reactjs webpack craco

我想在我的 React 应用程序中利用网络工作者。我决定使用线程作为我的支持库。

为了使其能够与 webpack 捆绑包一起运行,必须包含线程插件。我碰巧使用CRACO,所以我仍然可以修改我的 webpack 配置。

在里面craco.config.js我将插件添加到我的 webpack 对象中

webpack: {
        plugins: {
            add: [new ThreadsPlugin()]
        }
}
Run Code Online (Sandbox Code Playgroud)

我的工人被称为

const worker = new Worker('./workers/auth', { type: 'module' });
Run Code Online (Sandbox Code Playgroud)

我在这一行看到的错误是

Failed to load module script: The server responded with a non-JavaScript MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.
Run Code Online (Sandbox Code Playgroud)

也许最值得注意的是,它似乎试图将工作程序引用为 URL,而不是捆绑应用程序中的路径。

:3000/workers/auth:1 
Run Code Online (Sandbox Code Playgroud)

这是否意味着ThreadsPlugin没有被捆绑和利用?我可以采取哪些方法来收集有关该问题的更多见解?


编辑

我通过日志记录确认该threads-plugin库确实由我的 webpack 配置初始化。图书馆的大部分区域WorkerPlugin.prototype.apply似乎没有着火。

作者问道,我可能错过了设置中的一个步骤。更多详细信息请参见此处