Error: error:0308010C:digital envelope routines::unsupported
通常与 Node.js 的加密库中对某些加密算法的支持有关。这个错误可能是因为 Node.js 的版本与某些依赖库不兼容导致的。特别是在 Node.js 17+ 版本中,默认使用 OpenSSL 3,而一些旧的加密方式在 OpenSSL 3 中不再被支持。
这里有几种可能的解决方案:
-
更改 Node.js 的加密策略:你可以尝试设置环境变量
NODE_OPTIONS
来更改 Node.js 的加密策略。在命令行中运行你的应用前,尝试设置这个环境变量:set NODE_OPTIONS=--openssl-legacy-provider
如果你是在 Linux 或 macOS 系统上,使用如下命令:
export NODE_OPTIONS=--openssl-legacy-provider
然后再运行你的应用程序看看问题是否解决。
-
降级 Node.js 版本:如果你目前使用的是 Node.js 的一个较新版本(尤其是 17 或更高版本),尝试切换到一个较低的版本,如 Node.js 16 或更早,这些版本默认使用 OpenSSL 1.1.x。
-
更新依赖:检查
compression-webpack-plugin
和其他相关依赖库是否有更新的版本可用,这些版本可能已经修复了与 Node.js 新版本的兼容问题。你可以通过运行:npm update
来尝试自动更新项目依赖。
-
配置 Webpack:确保你的 Webpack 配置是最新的,并且与你的 Node.js 版本兼容。