HyperLedger启动业务网络失败求助(composer v0.19.5)
解决HyperLedger Composer启动业务网络时的npm EAI_AGAIN错误
从你给出的错误日志来看,核心问题是Docker容器内无法解析npm官方源的域名(registry.npmjs.org),导致安装业务网络依赖时失败(错误码EAI_AGAIN是DNS解析超时/失败的典型表现)。下面是针对性的解决步骤:
步骤1:检查并修改Docker的DNS配置
HyperLedger Fabric的容器默认使用主机的DNS配置,如果你的主机DNS无法正常解析外部域名,容器也会跟着出问题。你可以手动指定可靠的DNS服务器:
- 编辑Docker的配置文件(不同系统路径不同):
- Linux:
/etc/docker/daemon.json - Windows/macOS:通过Docker Desktop的设置界面找到"Daemon"->"DNS"选项
- Linux:
- 添加或修改DNS配置,比如使用谷歌公共DNS:
{ "dns": ["8.8.8.8", "8.8.4.4"] } - 重启Docker服务让配置生效:
- Linux:
sudo systemctl restart docker - Windows/macOS:在Docker Desktop里点击"Restart"按钮
- Linux:
步骤2:清理残留并重新部署
之前的启动失败可能留下了无效的容器或网络状态,先清理再重新操作:
- 停止并删除相关容器:
docker stop $(docker ps -aq) docker rm $(docker ps -aq) - 删除已经安装的业务网络:
composer network delete -c PeerAdmin@hlfv1 -n tutorial-network -V 0.0.1 - 重新安装业务网络:
composer network install -c PeerAdmin@hlfv1 -a tutorial-network@0.0.1.bna - 再次尝试启动网络:
composer network start --networkName tutorial-network --networkVersion 0.0.1 --networkAdmin admin --networkAdminEnrollSecret adminpw --card PeerAdmin@hlfv1 --file networkadmin.card
步骤3:备选方案——切换npm国内镜像
如果修改DNS后还是无法访问官方源,可以在你的业务网络的package.json里指定国内的npm镜像,这样容器安装依赖时会使用国内源,更稳定:
- 打开业务网络根目录下的
package.json,添加或修改registry字段:{ "name": "tutorial-network", "version": "0.0.1", "registry": "https://registry.npmmirror.com/" // 其他原有字段... } - 重新生成.bna文件:
composer archive create -t dir -n . - 再重新执行安装和启动命令。
这些步骤应该能解决你遇到的DNS解析问题,让业务网络顺利启动。
内容的提问来源于stack exchange,提问作者ameyaraje
相关产品推荐
相关产品推荐

