我如何在 npm 中 require() 网络工作者?

How do I require() web workers in npm?

我有一个 npm/webpack 设置,我的部分应用程序需要 Web Workers。通常,Web Worker 是使用以下语法创建的:

var worker = new Worker('path/to/external/js/file.js');

在 npm 中,这不起作用,因为我使用的开发环境不接受这样的路径。必须使用 require().

包含文件

我绝对不能 link 文件,因为这违反了跨域规则。

是否有包含这些工作文件的策略?

Webpack 提供的 worker-loader 加载器似乎可以解决您的问题。这个模块可以用 npm install --save-dev worker-loader.

安装

看看 how to use loaders,然后像这样要求您的网络工作者文件:

const Foo = require("worker!./path/to/external/js/file.js");
const fooWorker = new Foo();

注意路径前的 worker!,它告诉 Webpack 专门使用 worker loader。

如果您的设置正确,您应该也能够在工作文件本身中正常要求模块。