在亚马逊托管区块链的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
相关产品推荐
相关产品推荐

