在Ganache部署合约时遭遇NETWORK_ERROR:无法检测网络求助
Ganache部署合约时出现"could not detect network"错误的解决方法
问题详情
部署合约时遇到如下错误:
Error: could not detect network (event="noNetwork", code=NETWORK_ERROR, version=providers/5.7.2) at Logger.makeError (/mnt/c/Codeeater/node_modules/@ethersproject/logger/src.ts/index.ts:269:28) at Logger.throwError (/mnt/c/Codeeater/node_modules/@ethersproject/logger/src.ts/index.ts:281:20) at EthersProviderWrapper.<anonymous> (/mnt/c/Codeeater/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:483:23) at step (/mnt/c/Codeeater/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23) at Object.throw (/mnt/c/Codeeater/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53) at rejected (/mnt/c/Codeeater/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65) at processTicksAndRejections (node:internal/process/task_queues:96:5) { reason: 'could not detect network', code: 'NETWORK_ERROR', event: 'noNetwork' } error Command failed with exit code 1.
相关配置文件
- hardhat.config.js:
require("@nomicfoundation/hardhat-toolbox"); require("dotenv").config(); /** @type import('hardhat/config').HardhatUserConfig */ const Sepolia_url = process.env.Sepolia_url; const private_key = process.env.private_key; const Ganache_url = process.env.Ganache_url; const Ganache_private_key = process.env.Ganache_private_key; module.exports = { solidity: "0.8.17", networks: { sepolia: { url: Sepolia_url, accounts: [private_key], }, Ganache: { url: Ganache_url, accounts: [Ganache_private_key], }, }, };
- .env:
Ganache_url = "HTTP://127.0.0.1:7545" Ganache_private_key = "075d807fa06bcbb594c268c2f07a52cd4c9fe7d4f23b1e5e974a34cf6ba5c210"
执行命令:
yarn hardhat run --network Ganache scripts/major_project.js
解决步骤
- 确认Ganache服务状态:打开Ganache客户端,确保本地节点正在运行,端口号与
Ganache_url中的7545完全一致。节点未启动是触发该错误的最常见原因。 - 修正URL大小写:将
.env中的HTTP://127.0.0.1:7545改为小写http://127.0.0.1:7545,部分环境对URL协议头的大小写敏感。 - 检查网络连接限制:确认本地防火墙未阻止127.0.0.1:7545的连接,当前环境也没有启用代理导致Hardhat无法访问本地节点。
- 重新加载环境变量:重启终端后再执行部署命令,避免.env文件的修改未生效。
- 测试节点可达性:执行以下curl命令验证Ganache节点是否正常响应:
若返回类似curl http://127.0.0.1:7545 -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'{"jsonrpc":"2.0","id":1,"result":"0x0"}的结果,说明节点正常;若连接失败,需排查Ganache启动状态或端口占用情况。
内容的提问来源于stack exchange,提问作者Thamesh chandravanshi
相关产品推荐
相关产品推荐

