hyperledger composer V 0.12 部署失败

hyperledger composer V 0.12 deploy fails

使用 Hyperledger Composer V0.12 使用以下代码调用部署函数,returns 'successful' 结果:

/**
 * Deploys a new BusinessNetworkDefinition to the Hyperledger Fabric. The connection must be connected for this method to succeed.
 * @param {express.req} req - the inbound request object from the client
 *  req.body.myArchive: _string - string name of object
 *  req.body.deployOptions: _object - string name of object
 * @param {express.res} res - the outbound response object for communicating back to client
 * @param {express.next} next - an express service to enable post processing prior to responding to the client
 * returns composerAdmin.connection - either an error or a connection object
 * @function
 */
exports.deploy = function(req, res, next) {

let newFile = path.join(path.dirname(require.main.filename),'network/dist',req.body.myArchive);
let archiveFile = fs.readFileSync(newFile);

let adminConnection = new composerAdmin.AdminConnection();

return BusinessNetworkDefinition.fromArchive(archiveFile)
    .then(function(archive) {
        adminConnection.connect(config.composer.connectionProfile, config.composer.adminID, config.composer.adminPW)
        .then(function(){
            adminConnection.deploy(archive)
                .then(function(){
                    console.log('business network '+req.body.myArchive+' deployed successful: ');
                    res.send({deploy: req.body.myArchive+' deploy succeeded'});
                })
                .catch(function(error){
                    console.log('business network '+req.body.myArchive+' deploy failed: ',error);
                    res.send({deploy: error});
                    });
            });
        });
};

但是当我经历以下过程时:

  1. 启动 docker 图像,使用 cli 部署网络
  2. ping
  3. 取消部署
  4. 部署

我得到以下结果:

[2] at: 08:10:36.058 Url is: /composer/admin/ping
network ping successful:  { version: '0.12.0', participant: null }
[3] at: 08:11:05.503 Url is: /composer/admin/undeploy
zerotoblockchain-network network undeploy successful 
[4] at: 08:11:25.186 Url is: /composer/admin/ping
(node:18241) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Error trying to ping. Error: Error trying to query chaincode. Error: chaincode error (status: 500, message: Error: The business network has been undeployed)
[5] at: 08:11:34.393 Url is: /composer/admin/deploy
business network zerotoblockchain-network.bna deployed successful: 
[6] at: 08:11:44.211 Url is: /composer/admin/ping
(node:18241) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Error trying to ping. Error: Error trying to query chaincode. Error: chaincode error (status: 500, message: Error: The business network has been undeployed)

这表明 composer deploy 函数实际上并未部署网络,尽管我似乎从部署服务收到了一条成功完成的消息。请帮忙?

当您取消部署业务网络时,它所做的只是将业务网络标记为不可访问。它仍处于部署状态 运行。这样做的原因是目前 Hyperledger fabric 没有提供关闭实例化链代码的机制。所以我们所能做的就是将其标记为不可用。 部署 API 和命令是建立业务网络的老方法 运行。新方法是 install/start 组合。部署报告成功的原因是它必须对安装和启动命令报告的错误做出决策,以便继续以 Hyperledger Fabric 的预期方式工作。因此,尽管它报告部署成功,但它实际上什么也没做,因为它已经部署了。