Hardhat连接超时:执行JSON-RPC服务器时出现HH604错误
解决Hardhat分叉网络时出现的HH604连接超时错误
核心问题排查与解决步骤
1. 修复不完整的RPC URL
你执行npx hardhat node --fork https://eth-mainnet.g.alchemy.com/v2/时使用的RPC URL是不完整的——Alchemy的RPC地址必须附带个人API密钥,正确格式应为https://eth-mainnet.g.alchemy.com/v2/你的API_KEY。缺失密钥会直接导致连接失败超时。
同时检查GOERLI_RPC_URL环境变量中的地址,确保它是完整、有效的RPC端点(包含API密钥),可以用curl命令验证连通性:
curl -X POST <你的RPC_URL> -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
如果返回正常的区块号,说明URL有效;若超时或报错,需更换可用的RPC节点。
2. 处理网络连接限制
- 若本地网络无法直接访问Alchemy/Infura等境外RPC服务,需调整网络环境,或更换国内可访问的以太坊RPC节点。
- 延长Hardhat分叉的超时时间,避免因区块数据下载慢导致超时:
hardhat:{ loggingEnabled: false, forking: { url: process.env.GOERLI_RPC_URL, timeout: 120000 // 延长至120秒 } }
3. 确保环境变量正确加载
Hardhat不会自动加载.env文件,需手动配置:
- 安装
dotenv依赖:npm install dotenv --save-dev - 在
hardhat.config.js顶部添加:require('dotenv').config(); - 可以临时添加日志确认变量是否加载:
运行测试时若输出为空,说明环境变量未正确读取,需检查console.log("GOERLI RPC URL:", process.env.GOERLI_RPC_URL);.env文件路径和变量名是否正确。
4. 检查本地资源与端口
- 分叉模式需要同步大量链上数据,确保本地有足够的内存和磁盘空间。
- 确认Hardhat节点默认端口(8545)未被其他服务占用,若被占用可指定端口启动:
npx hardhat node --fork <完整RPC_URL> --port 8546
内容的提问来源于stack exchange,提问作者Doskhan Muafik
相关产品推荐
相关产品推荐

