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

在亚马逊托管区块链的Hyperledger Fabric中无法调用Node.js链码

问题解决:AWS Managed Blockchain链码调用失败(container exited with 0)

问题分析

从报错信息chaincode registration failed: container exited with 0以及CloudWatch日志(显示模块查找失败,无法加载fabric-shim或fabric-contract-api这类依赖)来看,核心问题是链码容器启动时无法正确定位依赖模块,这和你将node_modules重命名为lib并修改start脚本的操作直接相关。

解决方案

1. 恢复依赖目录结构

把重命名的lib目录改回node_modules——Hyperledger Fabric的Node.js链码运行环境默认从node_modules加载依赖,自定义目录路径会导致模块查找逻辑失效。

2. 修改package.json的start脚本

删除NODE_PATH=lib配置,将start脚本恢复为默认形式:

"start": "node dist/index.js"

3. 重新构建并打包链码

在链码目录下执行以下操作:

  • 确保依赖安装完整:
    npm install
    
  • 重新编译TypeScript代码:
    npm run build
    
  • 重新打包链码:
    docker exec cli peer lifecycle chaincode package package.tar.gz --lang node --label package_3 --path ./fabric-samples/asset-transfer-basic/chaincode-typescript/
    

4. 重新执行链码生命周期流程

依次重新执行安装、审批、提交操作,最后再次调用InitLedger:

# 重新安装链码
docker exec cli peer lifecycle chaincode install package.tar.gz
# 获取新的PACKAGE_ID(替换为实际输出的ID)
export CC_PACKAGE_ID=package_3:xxxxxx
# 重新审批链码定义(sequence需比之前版本+1)
docker exec cli peer lifecycle chaincode approveformyorg --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 2 --package-id $CC_PACKAGE_ID
# 检查审批就绪状态
docker exec cli peer lifecycle chaincode checkcommitreadiness --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 2
# 重新提交链码定义
docker exec cli peer lifecycle chaincode commit --orderer $ORDERER --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 --version v0 --sequence 2
# 调用InitLedger初始化账本
docker exec cli peer chaincode invoke --tls --cafile /opt/home/managedblockchain-tls-chain.pem --channelID supply-chain --name package3 -c '{"function":"InitLedger","Args":[]}'

注意:提交链码时sequence必须比之前的版本号加1,因为链码定义已更新。

额外检查点

  • 确认AWS Managed Blockchain节点支持的Node.js版本与你链码package.json中指定的node >=12匹配(Fabric 2.x环境通常支持Node 12/14版本)。
  • 检查dist目录是否正确生成了编译后的index.js文件,确保编译过程无报错。

内容的提问来源于stack exchange,提问作者Ricardo Passos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:57:33