Я использую webpack
, чтобы собрать проект, который использует Web Workers
. Для этого я использую загрузчик worker-loader
.
Я сделал минимальный план , чтобы продемонстрировать свою среду (я также вставлю код ниже для потомков).
Проблема в том, что разрешение рабочего файла не работает должным образом. Если я запускаю index.html
(я обслуживаю корневую папку с HTTP-сервером), он, естественно, может разрешить ../dist/TestMain.js
, но пытается разрешить TestWorker.js
из ./
относительно index.html
. Я хотел бы, чтобы он разрешил от ./
относительно TestMain.js
.
Я пытался добавить output.publicPath = "./"
, но это не помогло. Я искал документацию (и документацию worker-loader
) на предмет схожих опций, но не нашел ничего, что, как я могу сказать, уместно (я могу ошибаться).
Обычно я бы все использовал resolve.alias
, но выходные данные должны быть в состоянии перенаправить в любую папку (основной файл JS и рабочий файл JS останутся вместе в одной папке), на которую ссылается страница HTML .
Я также видел, что могу встроить работника, но я бы хотел этого избежать, так как это приводит к потере работника (может вызвать другие виды проблем со ссылками).
Есть ли варианты, которые мне не хватает, чтобы включить относительные ссылки, или обходной путь, который я пропустил?
Вот структура:
Project
|- dist
| |- TestMain.js
| |- TestWorker.js
|- src
| |- workers
| | |- TestWorker.js
| |- index.js
|- test
| |- index.html
|- webpack.config.js
Вот мой webpack.config.js:
const path = require("path");
module.exports = {
entry: "./src/index.js",
mode: "development",
output: {
filename: "TestMain.js",
path: path.resolve(__dirname, "dist"),
library: "MyLib",
libraryTarget: "umd"
},
module: {
rules: [
{
test: /\.js$/,
include: [
path.resolve(__dirname, "src/workers"),
],
use: {
loader: "worker-loader",
options: {
name: "[name].js"
}
}
}
]
}
};
Я поделюсь другими моими файлами, если хотите, но это действительно работает , если рабочий файл находится в той же папке, что и index.html
.