vue安装compression-webpack-plug打包时gzip压缩ERROR TypeError:Cannot read property ‘tapPromise‘ of undefined

本文介绍如何在Vue项目中使用compression-webpack-plugin插件进行gzip压缩配置,以减少文件大小,提高加载速度。文中提供了具体配置代码及解决高版本插件导致的问题。

 npm install compression-webpack-plugin --save-dev

vue.config.js文件进行webpack配置 

const CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
    configureWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            return {
                // gzip压缩
                plugins: [
                    new CompressionPlugin({
                        algorithm: 'gzip', // 使用gzip压缩
                        test: /.js$|.html$|.css$/, // 匹配文件名
                        filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名,后缀加.gz)
                        minRatio: 1, // 压缩率小于1才会压缩
                        threshold: 10240, // 对超过10k的数据压缩
                        deleteOriginalAssets: false, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
                    })
                ]
            }
        }
    },
};

npm run build进行打包时出现了 ERROR TypeError:Cannot read property ‘tapPromise‘ of undefined问题

compression-webpack-plugin 安装的是 9 版本的

 

先执行卸载命令->npm uninstall compression-webpack-plugin

执行安装命令->npm i compression-webpack-plugin@5.0.1


 

 

在使用 Yarn 构建项目,出现 `TypeError: Cannot read properties of undefined (reading 'tapPromise')` 错误通常与 Webpack 插件或加载器的版本兼容性问题有关,尤其是在使用较新版本的 `compression-webpack-plugin` 。该错误表明某个插件尝试访问 Webpack 编译器的某个钩子(hook),该钩子未被正确初始化。 ### 降级 `compression-webpack-plugin` 版本 默认情况下,使用 `yarn add compression-webpack-plugin -D` 安装的是最新版本(v7+),但该版本可能与当前 Webpack 或项目配置不兼容。可以尝试降级到 v6.x 版本以解决此问题: ```bash yarn add compression-webpack-plugin@6.1.1 -D ``` 在 `vue.config.js` 中保持配置不变,但确保 Webpack 版本与插件版本兼容: ```javascript const CompressionWebpackPlugin = require('compression-webpack-plugin'); module.exports = { configureWebpack: { plugins: [ new CompressionWebpackPlugin({ filename: '[path].gz[query]', algorithm: 'gzip', test: /\.(js|css)(\?.*)?$/i, threshold: 10240, minRatio: 0.8, deleteOriginalAssets: false, }), ], }, }; ``` 此方法适用于 Vue CLI 项目,也可适用于基于 Webpack 的 React 或其他前端框架项目 [^1]。 ### 清理缓存并重新安装依赖 如果已安装了不兼容的插件版本,建议清除 Yarn 缓存并重新安装依赖以确保一致性: ```bash yarn cache clean yarn install ``` 此步骤有助于消除因缓存导致的插件加载异常问题 [^2]。 ### 检查 Webpack 和相关插件版本 确保 Webpack 与 `compression-webpack-plugin` 的版本兼容。例如,Webpack 4 推荐使用 `compression-webpack-plugin` v6.x,而 Webpack 5 则支持 v7.x 及以上版本。如果使用的是 Vue CLI 或 Create React App 等封装工具,应参考其官方文档推荐的插件版本 。 ### 示例修复流程 1. 卸载当前版本的 `compression-webpack-plugin`: ```bash yarn remove compression-webpack-plugin ``` 2. 安装兼容版本: ```bash yarn add compression-webpack-plugin@6.1.1 -D ``` 3. 更新 `vue.config.js` 或 Webpack 配置文件以确保配置正确。 4. 清理缓存并重新安装依赖: ```bash yarn cache clean yarn install ``` 5. 运行构建命令: ```bash yarn build ``` 通过上述步骤,大多数因 `tapPromise` 引发的错误都可以被修复。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

船长在船上

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值