我已经下载了 hyperledger-fabric v2.0 织物样本存储库,启动了网络,然后通过fabtoken示例,一切似乎都可以正常工作。
当我尝试修改fabtoken示例以支持为默认组织创建其他用户时,问题开始了。我正在通过遵循Node SDK的How to use a common connection profile教程,尝试向网络上的组织注册新用户。但是, initCredentialStores()方法似乎没有初始化 Client.js 文件的 crypto_suite 字段,因此我得到了 错误:当我尝试调用 client.getCertificateAuthority()方法时,尚未将加密套件分配给该客户端 。
我尝试通过凭据存储的初始化( initCredentialStores()方法)进行调试。调用 const crypto_suite = BaseClient.newCryptoSuite(); 时似乎出现了问题,但是我无法确定错误的根本原因。
RegiserNewUser函数:
async function registerNewUser(client, caService, admin, uname){
await client.setUserContext(admin, true);
client.loadFromConfig('/home/todorovic/fabric-samples/basic-network/connection.yaml');
client.loadFromConfig('/home/todorovic/fabric-samples/basic-network/org1.yaml')
client.initCredentialStores().then(_ => {console.log('zavrsio init');});
const ca_client = client.getCertificateAuthority();
ca_client.register({enrollmentID: uname, affiliation: 'Org1'}, admin)
.then((secret) =>
{return client.setUserContext({username: uname, password: secret});
});
}
connection.yaml保持不变,而我添加的Org1.yaml文件如下所示:
name: "Org1 Client"
version: "1.0"
client:
organization: Org1
credentialStore:
path: "/tmp/hfc-cvs/org1"
cryptoStore:
path: "/tmp/hfc-cvs/org1"
答案 0 :(得分:0)
您需要在示例中更改此行
client.initCredentialStores().then(_ => {console.log('zavrsio init');});
到
await client.initCredentialStores();
否则,在您的代码尝试获取证书颁发机构之前,将不会初始化凭据存储。