如何在npm中要求()网络工作者?

如何在npm中要求()网络工作者?

问题描述:

我有一个npm/webpack安装程序,并且我的应用程序的一部分需要Web Workers。通常情况下,网络工作者与此语法创建的:如何在npm中要求()网络工作者?

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

在故宫,这是行不通的,因为我使用的开发环境不接受这样的路径。必须使用require()包含文件。

我不能只是链接到文件,因为这违反了交叉原点规则的事情。

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

+0

您是否试图在* Node *中运行您的Web工作人员? – Pointy

+0

不,我正在开发前端。也许这个问题更适合webpack,但是我在遇到麻烦时需要将外部工作者文件包含在软件包中。 –

+0

那么'新的Worker()'代码在客户端上运行;不管Node或npm需要什么,因为就服务器而言,代码只是内容。工作者文件将被从客户端获取,并传递一个普通的旧HTTP请求到你传递给'new Worker()'的URL。 – Pointy

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具体使用工装载机前预先考虑。

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

+1

似乎工作!这非常简单。谢谢。 –