运行npx hardhat node出现0308010C:digital envelope routines报错如何解决
报错原因
该报错是Node.js 17及以上版本内置的OpenSSL 3.0移除了对旧加密算法的支持,与你当前使用的Hardhat版本的加密依赖逻辑不兼容导致的,你的Hardhat配置文件本身没有问题。
解决方案
以下方案任选其一即可:
- 临时生效方案
运行命令前先在终端执行对应系统的环境变量设置命令:- Windows cmd环境:
set NODE_OPTIONS=--openssl-legacy-provider - Windows PowerShell环境:
$env:NODE_OPTIONS="--openssl-legacy-provider" - Mac/Linux环境:
export NODE_OPTIONS=--openssl-legacy-provider
执行完成后再运行npx hardhat node即可正常启动,该配置仅在当前终端窗口生效,新开窗口需要重新执行。
- Windows cmd环境:
- 项目内永久生效方案
修改项目的package.json文件,在scripts字段中新增启动命令:
后续直接执行"scripts": { "node": "NODE_OPTIONS=--openssl-legacy-provider hardhat node" }npm run node即可启动节点。如果是Windows原生环境(非WSL),可以先安装cross-env适配跨平台环境变量:
执行npm install cross-env --save-dev,再将脚本修改为:"node": "cross-env NODE_OPTIONS=--openssl-legacy-provider hardhat node" - 彻底兼容方案1:降级Node.js版本
将本地Node.js版本切换到16.x LTS版本即可完全避免该报错,推荐使用nvm工具管理多版本Node.js,切换成本极低。 - 彻底兼容方案2:升级Hardhat版本
新版Hardhat已经修复了对高版本Node.js的兼容问题,直接执行npm install hardhat@latest升级到最新版即可,升级时注意同步升级@nomiclabs/hardhat-ethers等相关依赖到兼容版本,避免出现依赖冲突。
内容的提问来源于stack exchange,提问作者Clint Oka
相关产品推荐
相关产品推荐

