Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当在同一文件中定义并使用webpack时,使用blob创建的JavaScript Web Workers将中断_Javascript_Google Chrome_Webpack_Web Worker - Fatal编程技术网

当在同一文件中定义并使用webpack时,使用blob创建的JavaScript Web Workers将中断

当在同一文件中定义并使用webpack时,使用blob创建的JavaScript Web Workers将中断,javascript,google-chrome,webpack,web-worker,Javascript,Google Chrome,Webpack,Web Worker,我目前使用的Web Worker是从如下Blob创建的: worker = new Worker(URL.createObjectURL(new Blob(["(" + worker_function + ")()"], { type: "text/javascript" }))); function worker_function() { self.importScripts("https://www.li

我目前使用的Web Worker是从如下Blob创建的:

worker = new Worker(URL.createObjectURL(new Blob(["(" + worker_function + ")()"], {
    type: "text/javascript"
})));
function worker_function() {
    self.importScripts("https://www.lib1.js", "https://www.lib2.js");
    // ... other stuff
    const x = new lib1Obj.doStuff()
其中,
worker\u函数
只是同一文件中的一个函数,其中包含工作人员应该执行的代码。在这个
worker\u函数中,我需要依赖外部库。这些库当前正在通过
importScripts
加载,如下所示:

worker = new Worker(URL.createObjectURL(new Blob(["(" + worker_function + ")()"], {
    type: "text/javascript"
})));
function worker_function() {
    self.importScripts("https://www.lib1.js", "https://www.lib2.js");
    // ... other stuff
    const x = new lib1Obj.doStuff()
到目前为止,这一切都很好。 此外,我还通过
var lib1Obj=require(“lib1”)
在主脚本中的worker外部使用
lib1
。然而,我现在在项目中使用webpack,这当然会最小化代码并重命名变量。一般来说,我确实想要这种行为,但这也会导致
lib1Obj
变量被重命名为
renamedLib1Obj
——在worker函数外部和内部。现在在浏览器中执行worker时,
renamedLib1Obj
不再定义,因为命名与
lib1
中预期的命名不一致,并且脚本中断

主要的问题是,创建的HTML文件也将在本地使用,并从文件系统打开,这迫使我在同一个JS文件中使用整个
Blob
解决方案定义worker,因为由于安全原因,否则worker无法在Google Chrome中执行。因此,在worker函数中使用
worker loader
来使用
import
require
而不是
importScripts
这样一种常见的解决方案对我来说不起作用,因为这会创建一个单独的构建文件,Chrome不允许这样做(或者至少我还没有找到一种方法让它对我起作用)

有没有办法解决这个问题?如果可能的话,我想尽量减少网页对我脚本的影响,但除此之外,我对任何事情都持开放态度。唯一的限制是,生成的工作人员必须从文件系统在Google Chrome中工作,而无需定义任何启动参数等

如果它是相关的,我指的
lib1
dagreD3
。重命名只是为了泛化