Hardhat部署合约至Sepolia测试网遇URL协议错误,求解决方案
解决Hardhat部署Sepolia测试网时的"Invalid URL protocol"错误
问题背景
执行部署命令:npx hardhat run scripts/deploy.js --network sepolia
触发错误提示:Invalid URL protocol: the URL must start with http: or https:
尽管hardhat.config.js中配置的Sepolia网络URL是合法的HTTPS地址,但实际调用的却是socks5://192.168.64.1:10808。
原因
Hardhat默认会读取系统的HTTP_PROXY/HTTPS_PROXY环境变量,如果这些变量设置的是socks5协议的代理,就会覆盖配置文件中的URL协议,导致协议不兼容报错。
解决方案
1. 临时禁用代理(单次部署生效)
执行部署命令前,临时清除终端的代理环境变量:
- Linux/macOS:
unset HTTP_PROXY HTTPS_PROXY && npx hardhat run scripts/deploy.js --network sepolia - Windows 命令提示符:
set HTTP_PROXY= && set HTTPS_PROXY= && npx hardhat run scripts/deploy.js --network sepolia - Windows PowerShell:
$env:HTTP_PROXY = $null; $env:HTTPS_PROXY = $null; npx hardhat run scripts/deploy.js --network sepolia
2. 调整全局代理设置
如果不需要全局代理,直接移除系统或终端中的HTTP_PROXY和HTTPS_PROXY配置;如果必须使用代理,确保代理地址是HTTP/HTTPS协议(而非socks5)。
3. 让Hardhat忽略代理(针对特定网络)
在hardhat.config.js的Sepolia网络配置中添加skipFetchSetup: true,强制Hardhat不使用代理,直接连接配置的URL:
module.exports = { defaultNetwork: "hardhat", solidity: "0.8.24", networks: { sepolia: { url: "https://eth-sepolia.g.alchemy.com/v2/y4r3BgNFU-zhHGd8BWs-OhCMRR7ghpA2", accounts: [PRIVATE_KEY], chainId: 11155111, skipFetchSetup: true // 新增该行 }, } };
内容的提问来源于stack exchange,提问作者bo wang
相关产品推荐
相关产品推荐

