使用Brownie部署合约时报RPCRequestError: Web3 is not connected错误如何解决
问题原因排查
出现该Web3 is not connected报错的核心原因是Brownie无法连接到目标RPC节点,具体可定位到以下几种场景:
- Brownie默认运行时未指定网络,会尝试连接本地8545端口的以太坊节点,若未提前启动Ganache、Hardhat Network等本地测试节点,就会出现连接被拒绝的问题
- 自定义Brownie网络配置错误,比如指定的本地节点端口、地址与实际运行的节点不符
- 本地防火墙、安全软件拦截了8545端口的连接请求,或8545端口被其他无关程序占用
解决方法
- 方案1:使用Brownie内置临时开发网络运行
执行部署命令时追加--network development参数,Brownie会自动启动临时Ganache节点完成部署,无需手动提前开启节点,命令如下:brownie run scripts/deploy.py --network development - 方案2:手动启动本地持久化测试节点后部署
先启动Ganache GUI、Ganache CLI或Hardhat Network等测试节点,确认节点监听地址为127.0.0.1:8545后,再执行原部署命令即可。
如果你的本地节点端口不是8545,可在项目根目录的brownie-config.yaml中添加自定义网络配置,示例如下:networks: default: custom-local custom-local: host: http://127.0.0.1 port: 7545 # 替换为你的实际节点端口 chainid: 1337 # 替换为你的实际节点链ID - 方案3:检查端口占用与防火墙规则
先验证8545端口是否被其他程序占用:Windows系统执行netstat -ano | findstr 8545,Linux/macOS系统执行lsof -i :8545。如果端口被占用可以关闭占用程序,或修改测试节点监听端口后更新Brownie配置即可。
如果端口未被占用,检查本地防火墙设置,放行8545端口的出入站规则后再尝试运行部署脚本。
内容的提问来源于stack exchange,提问作者Naga Tech
相关产品推荐
相关产品推荐

