Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 workbox网页包插件';s InjectManifest仅适用于“devtoolModuleFilenameTemplate:';文件://[绝对资源路径]'`_Webpack_Workbox_Workbox Webpack Plugin - Fatal编程技术网

Webpack workbox网页包插件';s InjectManifest仅适用于“devtoolModuleFilenameTemplate:';文件://[绝对资源路径]'`

Webpack workbox网页包插件';s InjectManifest仅适用于“devtoolModuleFilenameTemplate:';文件://[绝对资源路径]'`,webpack,workbox,workbox-webpack-plugin,Webpack,Workbox,Workbox Webpack Plugin,我想使用workbox网页包插件来包含我自己的服务人员。但是,除非我使用输出选项devToolModuleFilenameTemplate,否则使用InjectManifest不起作用。 似乎库:“[name]”是与workbox网页包插件组合的失败配置。使用library:[name]“选项时,为什么必须设置devToolModuleFilenameTemplate 复制错误的最小项目 NPM依赖性 配置失败(webpack.common.js/webpack.prod.js) const

我想使用
workbox网页包插件
来包含我自己的服务人员。但是,除非我使用输出选项
devToolModuleFilenameTemplate
,否则使用
InjectManifest
不起作用。 似乎
库:“[name]”
是与
workbox网页包插件组合的失败配置。使用
library:[name]“
选项时,为什么必须设置
devToolModuleFilenameTemplate

复制错误的最小项目

NPM依赖性 配置失败(
webpack.common.js
/
webpack.prod.js
const path=require('path');
const{InjectManifest}=require('workbox-webpack-plugin');
module.exports={
条目:{
测试:'./src/index.js'
},
输出:{
文件名:'[name].bundle.js',
path:path.resolve(uu dirname,'dist'),
库:“[name]”,//这是产生问题的行
干净:是的,
},
插件:[
新舱单({
swSrc:“./src/test offline worker.js”
}),
],
监视选项:{
忽略:['dist','**/node_modules']
},
模式:"发展",,
devtool:'源映射',//生产源映射
};
工作配置(
webpack.dev.js
const{merge}=require('webpack-merge');
const common=require('./webpack.common.js');
const path=require('path');
module.exports=合并(公共{
输出:{//InjectManifest仅适用于此设置
devtoolModuleFilenameTemplate:'文件:///[绝对资源路径]'//映射到具有绝对文件路径而不是webpack://协议的源
},
});
配置失败的错误消息 更新(2021-05-18)
正如Jeff Posnick所解释的,问题在于缺少占位符字符串的替换
[name]
。一种解决方案/解决方法是将
输出.devtoolnespace
设置为所述的常量值。

这里有两件事要做

首先,
webpack
的sourcemap generator在设置为
'[name]'
时似乎无法正常工作,与Workbox无关:

如果从“failing config”示例中注释掉
InjectManifest
插件,则它将生成一个包含以下内容的sourcemap:

{“sources”:[“webpack://[name]/./src/index.js”],…}

我也不认为这是有效的。它不会触发编译错误,但不是预期的输出。这将是一个需要向
webpack
团队提出的问题


其次,我想不出将
InjectManifest
插件添加到生成库输出的编译中的有效用例。使用
InjectManfest
创建的服务人员应该预先设置给定编译的输出,但同时,使用
output.library
set的编译的输出意味着是一个可重用的库,其他人将从自己的代码库中引入,即适合在
npm
上发布的东西。将服务人员运送到图书馆旁边或类似的地方是没有意义的。

抱歉;我正在跟踪这个问题以及一些相关的问题,实际上,我已经重新讨论了这个问题,因为它似乎与GitHub问题中提到的一些其他问题不同。我们的网页构建包含多个网站。这些库用于打包网站所需的依赖项,并且仅在内部使用。有些网站需要缓存来支持不稳定的移动互联网连接。对于这些,我们使用
InjectManifest
插件。但是,这些网站是最近才添加的,因此可能我们当前的网页包设置不再合适。如果有需要缓存的网站,您应该将
InjectManifest
插件添加到这些网站的编译中(可能会消耗您的
),不适用于生成
输出的编译。
  "devDependencies": {
    "ts-loader": "^8.1.0",
    "webpack": "^5.31.2",
    "webpack-cli": "^4.6.0",
    "webpack-merge": "^5.7.3",
    "workbox-webpack-plugin": "^6.1.2"
  }
PS C:\Users\USERNAME\dev\git\personal\webpack-problem> npm run build:prod

> webpack-problem@1.0.0 build:prod
> webpack --config webpack.prod.js

asset Test.bundle.js 618 bytes [compared for emit] (name: Test) 1 related asset
asset test-offline-worker.js 300 bytes [emitted] 1 related asset
./src/index.js 1 bytes [built] [code generated]

ERROR in Invalid URL: webpack://[name]/./src/test-offline-worker.js

webpack 5.31.2 compiled with 1 error in 104 ms
npm ERR! code 1
npm ERR! path C:\Users\USERNAME\dev\git\personal\webpack-problem
npm ERR! command failed
npm ERR! command C:\Windows\system32\cmd.exe /d /s /c webpack --config webpack.prod.js

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\USERNAME\scoop\persist\nodejs\cache\_logs\2021-04-12T14_28_43_806Z-debug.log