You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fabric Samples 2.2中TypeScript版FabCar链码调用失败求助

Hyperledger Fabric 2.2 TypeScript链码调用容器退出问题

问题概况

在Fabric Samples 2.2的test-network环境部署FabCar TypeScript链码,执行以下命令完成网络初始化与链码部署:

./network.sh up
./network.sh createChannel
./network.sh deployCC -ccn basic -ccl typescript -ccp /home/ubuntu/fabric/hlf/fabric-samples/chaincode/fabcar/typescript -cci initLedger

链码打包、安装、提交流程均无异常,但执行initLedger初始化调用时触发错误,对应链码Docker容器直接退出。

关键错误信息

命令执行输出

最终报错:Error: endorsement failure during invoke. response: status:500 message:"error in simulation: failed to execute transaction c9a...: could not launch chaincode basic_1.0:8d...: chaincode registration failed: container exited with 1

Docker容器退出日志

日志核心内容:

npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /usr/local/src/package.json
npm ERR! errno -2
npm ERR! enoent Could not find a package.json file in /usr/local/src

解决方案

问题根源是链码容器启动时无法找到package.json,TypeScript链码需编译后部署,且需确保容器能正确读取依赖配置与编译产物。

1. 预编译TypeScript链码

进入链码目录,完成依赖安装与编译:

cd /home/ubuntu/fabric/hlf/fabric-samples/chaincode/fabcar/typescript
npm install
npm run build

编译完成后会生成dist目录,包含可执行的JavaScript文件。

2. 调整链码部署命令

部署时指定ccp为编译后的dist目录,同时将链码语言指定为node(Fabric容器运行时实际执行的是编译后的JS文件):

./network.sh deployCC -ccn basic -ccl node -ccp /home/ubuntu/fabric/hlf/fabric-samples/chaincode/fabcar/typescript/dist -cci initLedger

3. 验证部署结果

重新部署后,检查链码容器状态:

docker ps | grep basic

若容器处于运行状态,执行以下命令验证链码调用:

peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic -c '{"function":"initLedger","Args":[]}'

内容的提问来源于stack exchange,提问作者Muhammed Rasheed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:25:20