我是使用硬帽部署智能合约的新手,正在https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13上学习教程。但是,在运行npx hardhat run scripts/deploy.js --network localhost
之后,我得到了以下错误。关于如何修复连接问题的任何想法?
HardhatError: HH108: Cannot connect to the network localhost.
Please make sure your node is running, and check your internet connection and networks config
at HttpProvider._fetchJsonRpcResponse (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/hardhat/src/internal/core/providers/http.ts:176:15)
at processTicksAndRejections (node:internal/process/task_queues:93:5)
at HttpProvider.request (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/hardhat/src/internal/core/providers/http.ts:55:29)
at GanacheGasMultiplierProvider._isGanache (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/hardhat/src/internal/core/providers/gas-providers.ts:302:30)
at GanacheGasMultiplierProvider.request (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/hardhat/src/internal/core/providers/gas-providers.ts:291:23)
at EthersProviderWrapper.send (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/@nomiclabs/hardhat-ethers/src/internal/ethers-provider-wrapper.ts:13:20)
at Object.getSigners (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/@nomiclabs/hardhat-ethers/src/internal/helpers.ts:23:20)
at getContractFactoryByAbiAndBytecode (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/@nomiclabs/hardhat-ethers/src/internal/helpers.ts:250:21)
at main (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/scripts/deploy.js:17:19)
Caused by: FetchError: request to http://127.0.0.1:8545/ failed, reason: connect ECONNREFUSED 127.0.0.1:8545
at ClientRequest.<anonymous> (/Users/cuneydtasoglu/Desktop/hardhat_list/blockchain/node_modules/node-fetch/lib/index.js:1461:11)
at ClientRequest.emit (node:events:376:20)
at Socket.socketErrorListener (node:_http_client:490:9)
at Socket.emit (node:events:376:20)
at emitErrorNT (node:internal/streams/destroy:188:8)
at emitErrorCloseNT (node:internal/streams/destroy:153:3)
at processTicksAndRejections (node:internal/process/task_queues:80:21)
Petr有正确的解决方案—您的本地测试节点(您以npx hardhat node
开始)需要在部署智能合约时继续运行。
换句话说,你应该:
- 在终端运行
npx hardhat node
。 - 打开新的终端窗口
- 运行
npx hardhat run [script-name] --network localhost
使用以下命令运行部署脚本时也存在类似问题:
npx hardhat run scripts/deploy.js --network localhost
我可以通过使用hardhat而不是localhost:
来解决这个问题。npx hardhat run scripts/deploy.js --network hardhat
我在运行时遇到了同样的问题:
npx hardhat run scripts/deploy.js --network localhost
并试图改变solid版本,清理项目,从头开始删除并安装npm_modules
,但我发现的唯一解决方案是检查我的/etc/hosts文件。有这样的记录:
::1 localhost
这显然给硬帽服务器造成了麻烦。
作为一个提示,请注意WebSocket JSON-RPC服务器地址,当你运行npx hardhat node
,以确保在哪个url上运行。
我遇到过这个问题。经过一番研究,我注意到节点版本是关键。如果使用的是节点版本17,可以将其降级到版本16。它适用于我的项目。
我也遇到过这个问题,无论是在连接Hardhat到以太坊还是雪崩的情况下。
下面的方法对我有用:
- 修改
/etc/hosts
,删除行其他人提到的::1 localhost
(https://stackoverflow.com/a/69808847/6189922) - 运行
npx hardhat node
。这应该输出如下行:
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
- 修改
hardhat.config.ts
,使local
下的url
条目具有与步骤2中打印的URL相同的端口号。(8545
,在本例中)
您的npx
命令可能会在此之后工作。
这个问题主要是新手面临的。
-
不要直接部署你的合约。首先,你必须启动你的本地节点,在本地主机上部署你的合约。
-
您可以通过输入命令::npx hardhat node
启动本地eth节点 -
现在部署合同。
你可以进入hardhat.config.js,进入网络,本地主机,从"http://localhost:8545
";";http://127.0.0.1:8545
">
在我的本地机器中,/etc/hosts::1 localhost
条目已经被注释,取消注释没有帮助,而是在硬配置js中替换上面的url条目。
输入npx hardhat node
或yarn hardhat node
。然后打开另一个终端并运行npx hardhat run scripts/deploy.js --network localhost
这应该可以工作
尝试用npx hardhat run --network hardhat [script-name]
代替