我正在使用Node.js应用程序和'composer-client'npm模块进行概念验证。
我尝试了不同的命令,例如添加参与者,添加资源和执行交易,所有内容似乎都能正常运行。
然而,当我尝试发布新身份时,我没有得到我期望的结果。我使用以下代码执行我的Node.js应用程序:
var businessNetwork = new BusinessNetworkConnection();
return businessNetwork.connect('admin@tutorial-network')
.then(() => {
return businessNetwork.issueIdentity('org.acme.biznet.Trader#Trader_001', 'usr001')
})
.then((result) => {
console.log(`userID = ${result.userID}`);
console.log(`userSecret = ${result.userSecret}`);
})
.catch((error) => {
console.error(error);
});
然后,UserId和UserSecret显示在控制台日志中。之后,我尝试ping商业网络:
var businessNetwork = new BusinessNetworkConnection();
return businessNetwork.connect('usr001@tutorial-network')
.then(() => {
return businessNetwork.ping();
})
.then((result) => {
console.log(`participant = ${result.participant ? result.participant : '<no participant found>'}`);
})
.catch((error) => {
console.error(error);
});
但是,我收到以下错误消息:
{ Error: Card not found: usr001@tutorial-network
at IdCard.fromDirectory.catch.cause (/home/user.name/git_repositories/nodejs/first.blockchain.test/node_modules/composer-common/lib/cardstore/filesystemcardstore.js:73:27)
at <anonymous>
cause:
{ Error: Unable to read card directory: /home/user.name/.composer/cards/user001@tutorial-network
如果我执行命令composer identity list -c admin@tutorial-network
,我会得到以下输出:
$class: org.hyperledger.composer.system.Identity
identityId: 9b49f67c262c0ae23e1e0c4a8dc61c4a12b5119df2b6a49fa2e02fa56b8818c3
name: usr001
issuer: 27c582d674ddf0f230854814b7cfd04553f3d0eac55e37d915386c614a5a1de9
certificate:
state: ISSUED
participant: resource:org.acme.biznet.Trader#Trader_001
但是,我无法找到名片。
答案 0 :(得分:0)
它对我有用。我正在使用作曲家0.15.1。
var businessNetwork = new BusinessNetworkConnection();
return businessNetwork.connect('admin@carauction-network')
.then(() => {
return businessNetwork.ping();
})
.then((result) => {
console.log(`participant = ${result.participant ? result.participant : '<no participant found>'}`);
})
.catch((error) => {
console.error(error);
});
输出就像这样
linux1@fabric:~/eventclient$ node event.js
participant = org.hyperledger.composer.system.NetworkAdmin#admin
您可能需要将身份证导入钱包吗?
composer card import --file networkadmin.card
答案 1 :(得分:0)
上周末我遇到了类似的问题。从V0.14到V0.15的部分升级说明指出我们必须删除(如果存在)~/.composer
,~/.composer-connection-profiles
和~/.composer-credentials
。我在第一次升级到v01.5时跳过了这一步,遇到了你看到的错误。返回并删除了这三个文件夹,重新安装了二进制文件并重新检查了docker镜像状态。错误消失了,并没有再出现。
答案 2 :(得分:0)
您将新卡user001
命名为user001@@tutorial-network
,而不是user001
。尝试仅使用ObjectOutputStream
作为连接卡名称进行连接。
答案 3 :(得分:0)
我使用以下命令使用从javascript获得的注册密码为参与者创建卡片。
composer card create -u usr001 -s <enrollment_secret> -f usr001.card -n tutorial-network -p connection.json
您可能在之前的教程之前的某个步骤中创建了所需的connection.json。如果此文件未明确提供,您可以从作曲家钱包中获取该文件。在当前版本中,它可以位于/home/your_user/.composer/cards/中。如果您只关注本教程,则此目录中的任何connection.json都可以。 之后,您必须使用以下方法将创建的凭据添加到钱包:
composer card import -f usr001.card
您测试已发布身份的代码是正确的。