我有一個npm/webpack安裝程序,並且我的應用程序的一部分需要Web Workers。通常情況下,網絡工作者與此語法創建的:如何在npm中要求()網絡工作者?
var worker = new Worker('path/to/external/js/file.js');
在故宮,這是行不通的,因爲我使用的開發環境不接受這樣的路徑。必須使用require()
包含文件。
我不能只是鏈接到文件,因爲這違反了交叉原點規則的事情。
是否有包含這些工作文件的策略?
我有一個npm/webpack安裝程序,並且我的應用程序的一部分需要Web Workers。通常情況下,網絡工作者與此語法創建的:如何在npm中要求()網絡工作者?
var worker = new Worker('path/to/external/js/file.js');
在故宮,這是行不通的,因爲我使用的開發環境不接受這樣的路徑。必須使用require()
包含文件。
我不能只是鏈接到文件,因爲這違反了交叉原點規則的事情。
是否有包含這些工作文件的策略?
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具體使用工裝載機前預先考慮。
如果您的設置正確,您應該也可以在工作文件本身中正常需要模塊。
似乎工作!這非常簡單。謝謝。 –
您是否試圖在* Node *中運行您的Web工作人員? – Pointy
不,我正在開發前端。也許這個問題更適合webpack,但是我在遇到麻煩時需要將外部工作者文件包含在軟件包中。 –
那麼'新的Worker()'代碼在客戶端上運行;不管Node或npm需要什麼,因爲就服務器而言,代碼只是內容。工作者文件將被從客戶端獲取,並傳遞一個普通的舊HTTP請求到你傳遞給'new Worker()'的URL。 – Pointy