nodeJS高版本出现:error:0308010C:digital envelope routines::unsupported

在升级NodeJS到新版本后,由于OpenSSL3.0的算法和密钥大小限制,启动项目时遇到error:0308010C的错误。为了解决这个问题,可以在命令行中设置NODE_OPTIONS环境变量为--openssl-legacy-provider,这样就能在开发环境中正常使用了。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

NodeJS升级最新

问题描述

启动项目出现:
error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19)


原因分析:

在网上找大佬查看是什么问题,这个感觉最靠谱:
出现这个错误是因为 node.js高版本发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制


解决方案:

在cmd黑窗输入set NODE_OPTIONS=--openssl-legacy-provider,然后在dev就可以使用了

### 解决方案概述 报错 `Error: error:0308010C:digital envelope routines::unsupported` 的根本原因是 Node.js v17 版本引入了 OpenSSL 3.0,而 OpenSSL 3.0 对加密算法和密钥大小施加了更严格的限制[^2]。以下是几种常见的解决方案: --- #### **方法一:设置环境变量** 通过配置环境变量来启用旧版的 OpenSSL 提供程序。 对于 Linux 和 macOS 用户,在终端执行以下命令: ```bash export NODE_OPTIONS=--openssl-legacy-provider ``` 对于 Windows 用户,在命令提示符或 PowerShell 中执行以下命令之一: ```cmd set NODE_OPTIONS=--openssl-legacy-provider ``` 或者在 PowerShell 中使用: ```powershell $env:NODE_OPTIONS="--openssl-legacy-provider" ``` 此方法适用于临时解决问题的情况,无需修改全局配置文件[^1]^。 --- #### **方法二:永久化环境变量** 为了使上述更改生效于每次启动系统时,可以通过操作系统级别的环境变量管理工具将 `NODE_OPTIONS` 设置为 `--openssl-legacy-provider`。 - **Windows**: 打开“高级系统设置”,进入“环境变量”界面,新增一个名为 `NODE_OPTIONS` 的系统变量,并将其值设为 `--openssl-legacy-provider`。 - **Linux/macOS**: 编辑用户的 shell 配置文件(如 `.bashrc`, `.zshrc`),添加如下内容: ```bash export NODE_OPTIONS=--openssl-legacy-provider ``` 保存后重启终端即可应用新设置[^3]^。 --- #### **方法三:降级 Node.js 到兼容版本** 如果无法接受长期依赖 `--openssl-legacy-provider` 参数,则可以选择卸载当前使用的高版本 Node.js (v17+) 并重新安装较低版本(例如 v16 LTS)。这通常被认为是一劳永逸的方法,因为低版本 Node.js 使用的是较早版本的 OpenSSL,不会受到该问题的影响[^5]^。 下载地址可访问官方站点 https://nodejs.org/ 下载对应稳定版本。 --- #### **方法四:升级项目中的依赖库** 部分情况下,项目的某些第三方模块可能未完全适配最新的 OpenSSL 政策。因此建议更新所有 npm/yarn 包至最新状态,尤其是涉及 SSL/TLS 功能的部分。运行以下命令完成操作: ```bash npm update --depth 999 # 或者如果你使用 yarn yarn upgrade ``` 此外还可以考虑迁移到支持更高安全标准的新框架或插件组合[^4]^。 --- ### 总结 推荐优先尝试调整环境变量的方式解决短期需求;而对于生产环境中部署的应用服务来说,评估是否有必要切换到更加稳定的 Node.js 发布分支可能是更好的选择。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值