INFO Starting development server... 95% emitting CompressionPlugin ERROR Error: error:0308010C:digital envelope routines::unsupported Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:79:19) at Object.createHash (node:crypto:139:10) at C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\compression-webpack-plugin\dist\index.js:243:42 at CompressionPlugin.compress (C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\compression-webpack-plugin\dist\index.js:284:9) at C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\compression-webpack-plugin\dist\index.js:305:12 at _next1 (eval at create (C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:14:17) at eval (eval at create (C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:33:1) at C:\Users\Administrator\Desktop\ruoyi-ui\node_modules\copy-webpack-plugin\dist\index.js:91:9
时间: 2025-04-01 11:25:19 浏览: 95
从错误信息来看,这是由于 Node.js 版本升级到 **17+** 或更高版本后引入了新的默认加密算法设置导致的问题。Node.js 的新版本对某些 OpenSSL 功能的支持发生了变化,默认不再支持部分旧的加密协议。
### 错误原因分析
`error:0308010C:digital envelope routines::unsupported` 表示当前使用的加密库不支持某种特定的操作(如哈希计算)。这通常是由于 Webpack 插件 `compression-webpack-plugin` 使用了过时的 API 来生成压缩文件,而这些 API 已经被更新的 Node.js 所弃用或修改。
---
### 解决方案
#### 方法一:降级 Node.js 到兼容版本
如果你不需要最新的 Node.js 特性,可以选择将 Node.js 升级回稳定版(例如 v16.x),这是一个简单的解决办法。
```bash
nvm install 16 # 安装 Node.js 16
nvm use 16 # 使用 Node.js 16
```
#### 方法二:通过环境变量修复
对于较新的 Node.js 版本(v17 及以上),可以添加一个环境变量来启用遗留的加密功能:
```bash
export NODE_OPTIONS=--openssl-legacy-provider
# 如果是在 Windows 系统下运行,请改为:
set NODE_OPTIONS=--openssl-legacy-provider
npm run dev
```
该选项告诉 Node.js 启用对旧式加密算法的支持。
#### 方法三:更新依赖插件
如果不想调整 Node.js 配置,则需要检查项目中的 Webpack 相关插件是否已经更新至最新版本。可以通过以下命令安装最新版本的 `compression-webpack-plugin` 和其他相关工具包:
```bash
npm update compression-webpack-plugin webpack crypto-browserify
```
同时确保项目的 Webpack 配置与最新版本保持一致,并查阅官方文档确认是否存在 Breaking Change。
---
### 注意事项
如果上述方法仍未解决问题,建议查看完整的报错堆栈并搜索具体的出错点位置,进一步定位冲突源码;必要时可以在 GitHub 上提交 Issue 请求社区帮助。
---
阅读全文
相关推荐












