【问题标题】:Algorithm "brotliCompress" is not found in "zlib"在“zlib”中找不到算法“brotliCompress”
【发布时间】:2021-12-29 10:05:48
【问题描述】:

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

当我运行 npm run build 时出现错误

在“zlib”中找不到算法“brotliCompress”

我正在使用node v8.11.3

这是完整的错误

C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\cli.js:93 抛出错误; ^

错误:在“zlib”中找不到算法“brotliCompress” 在新的 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) 在 Module._compile (C:\Projects\ProjName\FrontEnd\node_modules\v8-compile-cache\v8-compile-cache.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) 在需要 (C:\Projects\ProjName\FrontEnd\node_modules\v8-compile-cache\v8-compile-cache.js:159:20) 在 WEBPACK_OPTIONS (C:\Projects\ProjName\FrontEnd\node_modules\webpack-cli\bin\utils\convert-argv.js:114:13) 在 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_modules\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) 在 Module._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) 在要求(内部/module.js:11:18) 在对象。 (C:\Projects\ProjName\FrontEnd\node_modules\webpack\bin\webpack.js:156:2) 在 Module._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:191:16) 在 bootstrap_node.js:612:3 npm 错误!代码 ELIFECYCLE npm 错误! errno 1 npm 错误! ProjName@1.0.0 构建:npm run buildsprite && webpack --config ./webpack/webpack.config.prod.js --colors npm 错误!退出状态 1 npm ERR! npm 错误! ProjName@1.0.0 构建脚本失败。 npm 错误!这可能不是 npm 的问题。有可能 上面的附加日志输出。

npm 错误!可以在以下位置找到此运行的完整日志: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,
    }),

【问题讨论】:

    标签: node.js npm webpack brotli


    【解决方案1】:

    看起来 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");

    然后它起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      相关资源
      最近更新 更多