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

执行npx hardhat部署命令卡在编译完成阶段求解决方案

Goerli网络部署Hardhat合约进程卡住的解决方案
  • 检查节点URL有效性
    别用占位符my address,必须用Alchemy、Infura这类服务商提供的Goerli节点端点,比如https://eth-goerli.g.alchemy.com/v2/你的API_KEY。如果用本地节点,得确保节点同步完成、端口正常。测试方法:用curl访问URL,执行curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' 你的节点URL,超时或报错就是URL有问题。

  • 验证私钥与钱包余额
    私钥my key得是正确的十六进制格式,对应Goerli地址要有足够ETH支付gas费。去Goerli区块浏览器查地址余额,至少留0.01ETH(当前合约部署的gas需求不高)。

  • 调整部署脚本的等待逻辑
    原脚本里await transactionsContract.deployed()会无限等待交易上链,可能因为网络拥堵、gas设置太低卡住。试试手动指定gas参数:
    修改deploy.js的部署代码:

    const transactionsContract = await transactionsFactory.deploy({
      gasLimit: 3000000, // 300万gas足够当前合约部署,可按需调整
      gasPrice: ethers.utils.parseUnits('5', 'gwei') // 适配当前Goerli网络的gas价格
    });
    

    或者添加超时机制,避免无限等待:

    // 替换原有的await transactionsContract.deployed()
    const deploymentTx = transactionsContract.deployTransaction;
    const receipt = await Promise.race([
      deploymentTx.wait(),
      new Promise((_, reject) => setTimeout(() => reject(new Error('部署超时')), 50000)) // 50秒超时
    ]);
    console.log("Transactions address: ", receipt.contractAddress);
    
  • 排查依赖版本兼容性
    确保hardhat、@nomiclabs/hardhat-waffle、ethers版本匹配,执行npm update hardhat @nomiclabs/hardhat-waffle ethers,再重新运行npm install更新依赖。

  • 开启详细日志定位问题
    部署时添加--verbose参数查看详细日志:
    npx hardhat run scripts/deploy.js --network goerli --verbose
    日志会显示节点连接状态、交易发送情况,能精准找到卡住的环节。

内容的提问来源于stack exchange,提问作者Taha Halabi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:05:23