执行npx 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

