Hyperledger fabric v 2.0中的错误注册用户

问题描述 投票:1回答:1

我正在尝试超级账本结构样本(v2.0)。我的基本网络运行正常,我可以注册管理员。但是,当我尝试注册用户时,它会抛出类似“无法注册用户“ user1”的错误:TypeError:gateway.getClient不是函数”

[请在下面尝试的代码中找到示例

'use strict';

const { Gateway, Wallets } = require('fabric-network');
const path = require('path');

const ccpPath = path.resolve(__dirname, '..', '..', 'first-network', 'connection-org1.json');

async function main() {
    try {

        // Create a new file system based wallet for managing identities.
        const walletPath = path.join(process.cwd(), 'wallet');
        const wallet = await Wallets.newFileSystemWallet(walletPath);
        console.log(`Wallet path: ${walletPath}`);

        // Check to see if we've already enrolled the user.
        const userIdentity = await wallet.get('user1');
        if (userIdentity) {
            console.log('An identity for the user "user1" already exists in the wallet');
            return;
        }

        // Check to see if we've already enrolled the admin user.
        const adminIdentity = await wallet.get('admin');
        if (!adminIdentity) {
            console.log('An identity for the admin user "admin" does not exist in the wallet');
            console.log('Run the enrollAdmin.js application before retrying');
            return;
        }

        // Create a new gateway for connecting to our peer node.
        const gateway = new Gateway();

        await gateway.connect(ccpPath, { wallet, identity: 'admin', discovery: { enabled: false, asLocalhost: true } });

        // Get the CA client object from the gateway for interacting with the CA.
        const client = gateway.getClient();
        const ca = client.getCertificateAuthority();
        const adminUser = await client.getUserContext('admin', false);

        // Register the user, enroll the user, and import the new identity into the wallet.
        const secret = await ca.register({ affiliation: 'org1.department1', enrollmentID: 'user1', role: 'client' }, adminUser);
        const enrollment = await ca.enroll({ enrollmentID: 'user1', enrollmentSecret: secret });
        const x509Identity = {
            credentials: {
                certificate: enrollment.certificate,
                privateKey: enrollment.key.toBytes(),
            },
            mspId: 'Org1MSP',
            type: 'X.509',
        };
        await wallet.put('user1', x509Identity);
        console.log('Successfully registered and enrolled admin user "user1" and imported it into the wallet');

    } catch (error) {
        console.error(`Failed to register user "user1": ${error}`);
        process.exit(1);
    }
}

main();


注意:我能够通过cli in container及其正常工作来调用和查询fabcar样本。当我尝试通过SDK实现相同目标时,抛出错误“无法注册用户“ user1”:TypeError:gateway.getClient不是函数”。任何线索将不胜感激。

hyperledger-fabric blockchain hyperledger distributed-system hyperledger-fabric-sdk-js
1个回答
2
投票

您需要从其官方存储库中克隆registerUser.js文件的新副本。他们对存储库中的该文件进行了一些修改。因此,只需从其官方存储库中获取registerUser.js文件的新副本即可。

© www.soinside.com 2019 - 2024. All rights reserved.