Hyperledger Composer:命令行添加参与者成功,JS API报错求助
解决Composer JavaScript API添加参与者时的注册表不存在错误
你遇到的这个问题挺典型的——命令行能顺利添加参与者,但JavaScript API调用时却触发了系统注册表找不到指定参与者类型的错误。我帮你梳理几个关键排查点和修复方案:
1. 检查参与者类型的完全限定名是否正确
错误信息里的Participant:org.acme.health明显有问题:这只是命名空间,不是具体的参与者类型。你在命令行里肯定用了完整的类型(比如org.acme.health.Patient),但API代码里大概率写错了类型名,只填了命名空间。
2. 修正API中的参与者创建代码
确保你在创建参与者实例时,正确指定了命名空间+具体类型,而不是只写命名空间:
// 正确写法:命名空间、具体参与者类型、参与者唯一ID const participant = factory.newResource( 'org.acme.health', 'Patient', 'patient-001' ); // 补充参与者的其他属性 participant.fullName = 'John Doe'; participant.email = 'john@example.com';
3. 确认获取参与者注册表的代码正确
在添加参与者前,必须获取对应类型的注册表,不能用错误的类型路径:
// 获取正确的参与者注册表 const participantRegistry = await businessNetworkConnection.getParticipantRegistry( 'org.acme.health.Patient' ); // 将创建好的参与者添加到注册表 await participantRegistry.add(participant);
4. 排查拼写与大小写错误
仔细核对你的业务网络CTO文件里的参与者定义,确保API里的命名空间、类型名和CTO里的完全一致——大小写、拼写都不能出错。比如CTO里定义的是Patient,API里就不能写成patient。
5. 验证业务网络部署状态
有时候API连接的业务网络可能和命令行用的不是同一个,或者部署后没有同步更新。可以用composer network list命令确认当前部署的业务网络里确实包含你要添加的参与者类型。
按照上面的步骤修正后,应该就能解决这个注册表不存在的错误了。
内容的提问来源于stack exchange,提问作者ethertest
相关产品推荐
相关产品推荐

