Hyperledger Fabric 2.3.3 TypeScript链码安装成功却无法调用问题咨询
排查步骤
- 检查链码容器运行状态与构建日志
TS/JS链码需要依赖Fabric对应版本的Node链码构建、运行镜像,很多场景下peer端提示安装成功仅代表链码包已上传到peer节点,不代表链码镜像构建、容器启动成功。首先排查:- 查看各peer节点的运行日志,搜索是否有链码镜像拉取失败、构建失败、启动失败的报错
- 查看Kubernetes集群中是否存在对应链码的Pod,是否处于
CrashLoopBackOff、ImagePullBackOff等异常状态
绝大多数TS链码切换后出现该报错,都是因为链码容器启动失败,peer调用时无法找到运行的链码实例,才返回“未安装”的错误提示。
- 检查链码打包配置正确性
切换语言后很容易遗漏打包参数配置,请确认:- 链码打包命令的
--lang参数已正确设置为node,而非之前Go链码用的golang - 打包的链码压缩包根目录包含完整的
package.json文件,且scripts.start配置符合Fabric Node链码的启动要求
- 链码打包命令的
- 检查K8s环境链码构建权限配置
确认peer节点的部署配置满足链码动态构建要求:- peer容器是否正确挂载了Docker套接字,或者配置了符合要求的Chaincode Builder
- peer的环境变量中
CORE_CHAINCODE_BUILDER、CORE_CHAINCODE_RUNTIME对应的Node镜像版本,与TS链码使用的Node版本兼容
- 核对调用命令的背书节点配置
确认peer invoke命令中--peerAddresses指定的所有背书节点,均为你查询过已安装链码的节点,若调用时指定了未安装链码的其他peer节点,也会触发该报错。 - 重新核对链码包ID一致性
手动复制peer lifecycle chaincode queryinstalled输出的Package ID,重新执行各组织的approveformyorg与链码提交流程,避免之前的操作中存在隐性的字符差异(比如多余空格、大小写错误)。
内容的提问来源于stack exchange,提问作者gdgr
相关产品推荐
相关产品推荐

