问题描述
我的理解是以下 Webpack worker-loader 配置:
...
module: {
rules: [
{
test: /worker\.js/,loader: "worker-loader",options: {
inline: 'fallback',}
}
{ ... }
]
}
...
会将工作文件(在本例中命名为 worker.js)与其他 JS 文件捆绑到输出文件中,从而产生单文件输出。然后使用
在应用程序中加载文件import Worker from "worker-loader!./worker.js";
将成功加载 Worker。经过测试,似乎我被误解了。 inline
不会将 worker 打包成单个文件;它会在输出目录中创建一个单独的文件。
那么,inline
到底在做什么?
解决方法
内联加载器语法允许您在特定实例中覆盖项目中工作器的默认配置。这可能包括为网络工作者分配文件名以输出之类的事情。
它在 Webpack@4.x 中更有用。既然 Webpack@5.x 已经出来了,使用内联加载器的理由越来越少。
此外,Webpack@5.x
中不需要工作加载器。
但现在对于一些可能不受欢迎的消息 - 工作人员必须始终在他们自己的独立文件中,除非您将它们作为 blob 加载,这可能会对您的站点/应用程序产生安全影响。