在"zlib"中找不到算法"brotliCompress"



我已经使用此链接安装了compression-webpack-plugin,并按照的建议在webpack.config.js文件的插件部分添加了压缩插件

当我运行npm run build时,我得到一个错误

算法"brotliCompress";在";zlib";

我正在使用node v8.11.3

这是的全部错误

C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\cli.js:93投掷失误;^

错误:算法";brotliCompress";在";zlib";在新的CompressionPlugin上(C:\Projects\ProjName\FrontEnd\node_modules\compression webpack-plugin\dist\index.js:171:15(在对象处。(C:\Projects\ProjName\FrontEnd\webpack\webpack.config.prod.js:67:5(在模块中_compile(C:\Projects\ProjName\FrontEnd\node_modules\v8 compile cache\v8编译缓存.js:192:30(位于Object.Module_extensions..js(Module.js:663:10(在Module.load(Module.js:565:32(在tryModuleLoad(module.js:505:12(位于Function.Module_load(Module.js:497:3(在Module.require(Module.js:596:17(at required(C:\Projects\ProjName\FrontEnd\node_modules\v8 compile cache\v8编译缓存.js:159:20(在WEBPACK_OPTIONS(C:\Projects\ProjName\FrontEnd\node_modules\WEBPACK-cli\bin\utils\convert argv.js:14:13(at requireConfig(C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\utils\convert argv.js:116:6(位于C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\utils\convert argv.js:123:17在Array.forEach((在module.exports(C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\utils\convert argv.js:121:15(位于yargs.parse(C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\cli.js:71:45(在Object.parse(C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\node_modeles\yargs\yargs.js:576:18(位于C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\cli.js:49:8在对象处。(C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\cli.js:366:3(在模块中_compile(module.js:652:30(位于Object.Module_extensions..js(Module.js:663:10(在Module.load(Module.js:565:32(在tryModuleLoad(module.js:505:12(位于Function.Module_load(Module.js:497:3(在Module.require(Module.js:596:17(at required(internal/module.js:1:1:18(在对象处。(C:\Projects\ProjName\FrontEnd\node_modules\webpack\bin\webpack.js:156:2(在模块中_compile(module.js:652:30(位于Object.Module_extensions..js(Module.js:663:10(在Module.load(Module.js:565:32(在tryModuleLoad(module.js:505:12(位于Function.Module_load(Module.js:497:3(位于Function.Module.runMain(Module.js:693:10(启动时(bootstrap_node.js:19:16(在bootstrap_node.js:612:3 npm ERR!代码ELIFECYCLE npm ERR!errno 1 npm ERR!ProjName@1.0.0内部版本:npm run buildsprite && webpack --config ./webpack/webpack.config.prod.js --colorsnpm ERR!退出状态1 npm ERR!npm ERR!在处失败ProjName@1.0.0构建脚本。npm ERR!这可能不是npm的问题。很可能上面的附加日志输出。

npm ERR!此运行的完整日志可在以下位置找到:npm ERR
C:\Users\2048537\AppData\Roaming\npm-cache_logs\2021-12-29T09_59_46_237Z-debug.log

这就是我注入插件的方式

new CompressionPlugin({
filename: "[path][base].br",
algorithm: "brotliCompress",
test: /.(js|css|html|svg)$/,
compressionOptions: {
params: {
[zlib.constants.BROTLI_PARAM_QUALITY]: 11,
},
},
threshold: 10240,
minRatio: 0.8,
deleteOriginalAssets: false,
}),

看起来webpack团队需要更新https://webpack.js.org/plugins/compression-webpack-plugin/#using-brotli链接。

我替换插件代码如下

new BrotliGzip({
asset: '[file].br[query]',
algorithm: "brotli",
test: /.(js|css|html|svg)$/,
threshold: 10240,
minRatio: 0.8,
quality: 11
}),

其中BrotliGzip定义为const BrotliGzip = require("brotli-gzip-webpack-plugin");

然后它就起作用了。

最新更新