代码之家  ›  专栏  ›  技术社区  ›  Imad

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

  •  0
  • Imad  · 技术社区  · 4 年前

    我已经安装了 compression-webpack-plugin 使用 this 链接并在的插件部分添加了压缩插件 webpack.config.js 按建议归档 here

    当我跑的时候 npm run build 我犯了个错误

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

    我在用 node v8.11.3 .

    下面是全部错误

    C:\Projects\ProjName\FrontEnd\node\u modules\webpack cli\bin\cli。js:93 犯错误; ^

    错误:在“zlib”中找不到算法“brotliCompress” 在新的压缩插件(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) 在模块上_编译(C:\Projects\ProjName\FrontEnd\node_modules\v8 compile cache\v8 compile cache.js:192:30) 反对。模块_扩展。。js(模块js:663:10) 在模块上。加载(module.js:565:32) 在tryModuleLoad(module.js:505:12) 在功能上。模块_加载(module.js:497:3) 在模块上。要求(模块js:596:17) 需要时(C:\Projects\ProjName\FrontEnd\node_modules\v8 compile cache\v8 compile cache.js:159:20) 在WEBPACK_选项(C:\Projects\ProjName\FrontEnd\node_modules\WEBPACK cli\bin\utils\convert argv.js:114:13) 按要求配置(C:\Projects\ProjName\FrontEnd\node\u modules\webpack cli\bin\utils\convert argv.js:116:6) 位于C:\Projects\ProjName\FrontEnd\node\u modules\webpack cli\bin\utils\convert argv。js:123:17 在阵列上。forEach() 在模块上。导出(C:\Projects\ProjName\FrontEnd\node_modules\webpack cli\bin\utils\convert argv.js:121:15) 在雅格斯。解析(C:\Projects\ProjName\FrontEnd\node_modules\webpack cli\bin\cli.js:71:45) 反对。解析(C:\Projects\ProjName\FrontEnd\node_modules\webpack cli\node_modules\yargs\yargs.js:576:18) 位于C:\Projects\ProjName\FrontEnd\node\u modules\webpack cli\bin\cli。js:49:8 反对。(C:\Projects\ProjName\FrontEnd\node_modules\webpack cli\bin\cli.js:366:3) 在模块上_编译(module.js:652:30) 反对。模块_扩展。。js(模块js:663:10) 在模块上。加载(module.js:565:32) 在tryModuleLoad(module.js:505:12) 在功能上。模块_加载(module.js:497:3) 在模块上。要求(模块js:596:17) 需要时(内部/module.js:11:18) 反对。(C:\Projects\ProjName\FrontEnd\node\u modules\webpack\bin\webpack.js:156:2) 在模块上_编译(module.js:652:30) 反对。模块_扩展。。js(模块js:663:10) 在模块上。加载(module.js:565:32) 在tryModuleLoad(module.js:505:12) 在功能上。模块_加载(module.js:497:3) 在功能上。单元runMain(module.js:693:10) 启动时(bootstrap_node.js:191:16) 在bootstrap_节点。js:612:3 npm错误!代码ELIFECYCLE npm ERR!错误1 npm错误!ProjName@1.0.0建造: npm run buildsprite && webpack --config ./webpack/webpack.config.prod.js --colors npm错误!退出状态1 npm错误!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。日志

    这就是我注入插件的方式

    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,
        }),
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   Imad    4 年前

    看来网页包团队需要更新了 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");

    然后成功了。

    推荐文章