Ошибка регистрации пользователя в Hyperledger fabri c v 2.0 - PullRequest
1 голос
/ 12 марта 2020

Я пробую hyperledger fabri c sample (v2.0). Моя базовая c сеть работает нормально, и я могу зарегистрировать администратора. Однако, когда я пытался зарегистрировать пользователя, он выдает ошибку типа «Не удалось зарегистрировать пользователя» 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();


Примечание: я могу вызывать и запрашивать образцы fabcar через cli в контейнере и он работает нормально. когда я пытался добиться того же через SDK, он выдавал ошибку «Не удалось зарегистрировать пользователя« user1 »: TypeError: gateway.getClient не является функцией». Любые выводы будут оценены.

1 Ответ

3 голосов
/ 12 марта 2020

Вам необходимо клонировать новую копию файла registerUser. js из их официального репозитория. Они внесли некоторые изменения в этот файл в хранилище. Так что просто возьмите новую копию файла registerUser. js из их официального репозитория.

...