You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ethers.js连接Ganache部署合约报NETWORK_ERROR错误求助

问题背景

在本地使用Node.js + ethers.js 编写部署脚本,连接Ganache本地测试网部署SimpleStorage智能合约时,脚本输出部署等待提示后抛出NETWORK_ERROR错误,提示无法检测到网络。

原部署脚本代码

const ethers = require("ethers")
// const solc = require("solc")
const fs = require("fs-extra")

async function main(){
    // const provider = new ethers.providers.JsonRpcProvider("http://127.0.0.1:7545");
    // const wallet = new ethers.Wallet(
    //     "1ef159aa4f7ee5116a0f22652da709ccd8d35827b12a03eb24f22dd023591987",
    //     provider
    // )
    let provider = new ethers.providers.JsonRpcProvider("http://0.0.0.0:7545")
    let wallet = new ethers.Wallet("34db8b76c03356b47da8e1dcf427a35f9c013ce95a671ce23fe96d86fe2ba44b", provider)
    const abi = fs.readFileSync("./SimpleStorage_sol_SimpleStorage.abi", "utf8");
    const binary = fs.readFileSync(
        "./SimpleStorage_sol_SimpleStorage.bin",
        "utf8"
    )
    const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
    console.log("Deploying, please wait..");
    const contract = await contractFactory.deploy(); // Stop here! wait for contract to be deploy
    console.log(contract)

}

main()
    .then(() => process.exit(0))
    .catch((error)=>{
        console.error(error);
        process.exit(1);
    })

报错信息

Deploying, please wait..
Error: could not detect network (event="noNetwork", code=NETWORK_ERROR, version=providers/5.6.8)
    at Logger.makeError (/home/stars/forder/blockchain/leson5/ethers-simple-storage/node_modules/@ethersproject/logger/lib/index.js:233:21)
    at Logger.throwError (/home/stars/forder/blockchain/leson5/ethers-simple-storage/node_modules/@ethersproject/logger/lib/index.js:242:20)
    at JsonRpcProvider.<anonymous> (/home/stars/forder/blockchain/leson5/ethers-simple-storage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:561:54)
    at step (/home/stars/forder/blockchain/leson5/ethers-simple-storage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
    at Object.throw (/home/stars/forder/blockchain/leson5/ethers-simple-storage/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
    at rejected (/home/stars/forder/blockchain/leson5/ethers-simple-storage/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'
}
故障原因

核心问题是RPC服务地址配置错误:
0.0.0.0是服务端用于绑定所有网卡的监听地址,不能作为客户端访问本地服务的目标地址,客户端访问本机运行的服务必须使用127.0.0.1(本地回环地址)或者localhost。
其他可能触发同类错误的配置问题:

  • Ganache客户端未正常启动,或RPC服务实际监听端口不是配置的7545,部分版本Ganache默认RPC端口为8545,可在Ganache设置页的RPC SERVER栏核对实际端口
  • 若在WSL2环境运行Node脚本、Ganache运行在Windows宿主机,直接使用127.0.0.1无法访问宿主机服务,需要替换为WSL2可访问的宿主机虚拟网卡IP,同时在Ganache设置中将监听地址改为0.0.0.0放开所有网卡访问
  • 本地系统防火墙拦截了7545端口的本地访问请求
修复步骤
  1. 修改Provider初始化配置,将地址中的0.0.0.0替换为127.0.0.1,修正后的核心代码如下:
let provider = new ethers.providers.JsonRpcProvider("http://127.0.0.1:7545")
// 确认私钥为当前运行的Ganache实例中分配的测试账户私钥
let wallet = new ethers.Wallet("你的Ganache测试账户私钥", provider)
  1. 确认Ganache已正常启动,且RPC端口配置与脚本中一致
  2. 重新执行部署命令node deploy.js即可正常发起部署交易

优化建议:发起部署交易后,增加await contract.deployed()逻辑等待交易确认上链,再输出合约实例信息,避免拿到未完成确认的合约对象。

内容的提问来源于stack exchange,提问作者Paweł Stach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:15:28