Hardhat 2系でローカルノードへデプロイする際、HH108: Cannot connect to the network localhost が発生しました。まずノードが起動しているか、次に実際の接続先が一致しているかを確認します。Hardhat 3の接続エラー番号は HHE703 です。
原因と解消法
ローカルのEthereumネットワークが稼働していない
Hardhat 2系を導入済みのプロジェクトで、別ターミナルから npx hardhat node を実行し、表示されたRPCのURLを控えます。次のスクリプトで、接続先からチェーンIDが返ることを確認できます。
#!/bin/sh
set -eu
url=${1:-http://127.0.0.1:8545}
curl --fail --silent --show-error --connect-timeout 2 --max-time 5 \
--header 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' \
"$url"接続が成功すると result に16進数のチェーンIDが返ります。既定のHardhat NetworkのチェーンIDは 0x7a69 です。接続拒否ならノードの起動ログと待受ポートを確認します。HTTPが成功しても error が返る場合は、到達したRPCの応答を確認します。
ネットワーク設定が間違っている:
Hardhat 2系のCommonJS設定例です。既存プロジェクトでは networks.localhost.url を、起動ログで確認したURLに合わせます。たとえばノードが8546番で起動していれば、8545番を指定した疎通確認は失敗します。
module.exports = {
networks: {
localhost: {
url: "http://127.0.0.1:8545"
}
}
};私の環境ではローカルノードを起動し直して接続できました。疎通確認で result を確認した後、プロジェクトのデプロイ手順を実行します。
