95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported ,爱吃
时间: 2024-12-27 19:23:42 浏览: 18
### 错误分析
当遇到 `95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported` 这样的错误提示时,通常意味着在构建过程中遇到了加密或解密操作不支持的情况。该问题可能源于使用的Node.js版本与某些依赖库之间的兼容性问题[^1]。
### 解决方案一:更新 Node.js 版本
尝试升级到最新稳定版的Node.js可以有效解决问题。旧版本可能存在已知的安全漏洞或是不再支持特定算法,这可能是引发上述错误的原因之一。安装新版本前建议先备份项目环境配置文件以及当前使用的node_modules目录下的模块列表。
```bash
nvm install node --reinstall-packages-from=node
```
此命令会利用 nvm (Node Version Manager) 安装最新的LTS长期支持版本并重新安装所有必要的包[^3]。
### 解决方案二:调整 Webpack 配置中的压缩插件设置
如果不想更改Node.js版本,则可以在Webpack配置里禁用CompressionPlugin默认启用的一些特性来规避这个问题。具体做法是在webpack.config.js中找到CompressionPlugin的相关配置项,并对其进行适当修改:
```javascript
const webpack = require('webpack');
module.exports = {
plugins: [
new webpack.optimize.ModuleConcatenationPlugin(),
// 修改此处以适应不同场景需求
new CompressionWebpackPlugin({
algorithm(input, compressionOptions, callback) {
try {
return zlib.gzip(input, { level: zlib.Z_BEST_SPEED }, callback);
} catch (err) {
console.error(err);
process.exit(1); // 强制退出进程防止异常传播
}
},
test: /\.js$|\.css$/,
threshold: 10240,
minRatio: 0.8
})
]
};
```
通过自定义algorithm函数的方式绕过了原生实现中存在的潜在缺陷[^2]。
### 解决方案三:降级 OpenSSL 库版本
有时也会因为OpenSSL本身的变更引起此类报错,在这种情况下考虑回滚至更早些时候发布的OpenSSL版本也许能起到立竿见影的效果。不过需要注意的是这样做可能会带来新的安全隐患,因此仅作为临时措施而非长久之计。
阅读全文