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

使用Ethers.js部署Solidity合约至Ganache遇NETWORK_ERROR求助

解决Ethers.js部署合约到Ganache时的"could not detect network"错误

这个错误的核心是Ethers.js无法连接到Ganache节点,以下是排查方向和解决方案:

1. 确认Ganache服务状态与端口匹配

  • 检查Ganache是否已启动,确保其运行在你代码指定的7545端口(Ganache默认端口为7545)。如果Ganache修改过端口,同步修改代码中的RPC地址:
    const provider = new ethers.providers.JsonRpcProvider("http://127.0.0.1:你的Ganache端口");
    
  • 重启Ganache服务后,重新运行部署脚本。

2. 排查本地网络连接问题

  • 将RPC地址中的127.0.0.1替换为localhost,部分环境下localhost的网络解析更稳定:
    const provider = new ethers.providers.JsonRpcProvider("http://localhost:7545");
    
  • 检查本地防火墙、代理软件是否拦截了127.0.0.1:7545的通信,暂时关闭相关软件后重试。

3. 验证Ethers.js与Ganache的兼容性

  • 你当前使用的是Ethers.js providers 5.7.2版本,若Ganache版本较新,可能存在兼容性问题。可以尝试升级到5.x系列的最新稳定版:
    npm update ethers
    
  • 或者重新安装指定版本确保依赖稳定:
    npm install ethers@5.7.2 --save
    

4. 提前验证Provider连接

在代码中添加网络连接测试,提前定位问题:

async function main() {
  const provider = new ethers.providers.JsonRpcProvider("http://127.0.0.1:7545");
  // 新增网络连接测试
  try {
    const network = await provider.getNetwork();
    console.log("已连接到网络:", network);
  } catch (err) {
    console.error("网络连接失败:", err);
    return;
  }
  // 后续钱包、合约部署代码...
}

如果这一步就报错,说明问题完全出在Provider与Ganache的连接上,无需继续执行部署逻辑。

5. 修正代码笔误

你的代码末尾存在笔误:ProcessingInstruction.exit(0)应改为process.exit(0),虽然这不是当前网络错误的原因,但会导致脚本执行完成后报错,建议修正。


内容的提问来源于stack exchange,提问作者Aparna Liza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:50:31