Hyperledger Angular应用报错“Could not find API route”求助排查
解决Hyperledger Fabric Composer Angular应用404 API路由错误
我之前在Hyperledger Fabric Composer开发中也碰到过一模一样的问题,这个404错误本质是Angular UI没法连接到Composer REST服务器——UI发起的API请求找不到对应的服务端点,不管是自定义应用还是模板应用都出问题,大概率是REST服务器的配置或启动环节出了岔子,和UI本身关系不大。下面给你分步排查解决:
1. 先确认Composer REST服务器真的在正常运行
你提到执行了composer-rest-server,但得确保它持续运行,而且监听的是Angular默认期望的端口(默认是3000):
- 查看REST服务器的启动日志,正常启动会输出
Listening on http://localhost:3000 - 如果没启动,重新执行
composer-rest-server,按提示选择:- 已导入的
admin@my_app卡片(必须是这个管理员卡片) - 测试阶段允许匿名访问(选Yes)
- 启用事件发布(选Yes)
- 不启用TLS(选No)
- 已导入的
- 注意启动REST服务器的终端窗口不能关闭,它得一直运行才能处理API请求
2. 检查Angular应用的API端点配置
自动生成的Angular应用默认指向http://localhost:3000/api,要是REST服务器端口不对或者地址错误,肯定会触发404:
- 进入Angular应用的
src/environments目录,打开environment.ts文件 - 找到
apiUrl字段,确认它和你的REST服务器地址一致,示例如下:export const environment = { production: false, apiUrl: 'http://localhost:3000/api' }; - 修改配置后记得重新执行
ng serve重启Angular应用
3. 验证REST服务器的API是否真的可用
直接在浏览器访问REST服务器的API根地址(比如http://localhost:3000/api),如果能看到Swagger文档页面,说明REST服务没问题;要是也出现404,那问题出在REST服务器本身:
- 执行
composer card list确认admin@my_app卡片存在,要是没有就重新执行composer card import -f admin@my_app.card - 重启REST服务器,确保选择的业务网络是
my_app
4. 检查业务网络部署是否完整
有时候网络部署不彻底也会导致REST服务没法正常提供API:
- 执行
composer network list -c admin@my_app,确认my_app业务网络已经成功部署并运行 - 如果显示网络未运行,重新执行部署命令:
composer network start --networkName my_app --networkVersion 0.0.1 --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw - 部署完成后重新导入管理员卡片再启动REST服务器
额外提醒
- 确保本地的4200(Angular)和3000(REST服务器)端口没被其他程序占用
- 要是启动
composer-rest-server时选择了别的端口,一定要同步修改Angular应用里的apiUrl配置
内容的提问来源于stack exchange,提问作者steady_progress
相关产品推荐
相关产品推荐

