执行YO Hyperledger-Composer无法正确导入模型



构建一个简单的基于Hyperledger-Composer的应用程序,并使用与车辆 - 差异示例代码中的模型定义相似。具体来说,我有两个模型文件:base.to

namespace composer.base
abstract participant Member {
  o String companyName
}

和sample.cto(部分清单)

namespace org.acme.Z2BTestNetwork
import composer.base.*
import composer.events.*
participant Buyer identified by buyerID extends Member{
    o String buyerID
}
participant Seller identified by sellerID extends Member{
    o String sellerID
}
asset Order identified by orderNumber {
    o String orderNumber
    o String[] items

我能够使用此结构成功构建网络并使用Composer-Rest-Server服务和基于Bluemix的Composer进行测试。但是,您生成的应用程序无法找到"成员",显然在生成和构建过程中未导入base.cto文件。YO为该网络的模型文件夹中的每个文件生成了一个.TS文件。.TS文件对应于" sample.cto"包含以下内容,但是它缺少来自base.cto文件的抽象定义(在不同的.TS文件中),并且缺少任何指向该文件的链接。

import {Asset} from './org.hyperledger.composer.system';
import {Participant} from './org.hyperledger.composer.system';
import {Transaction} from './org.hyperledger.composer.system';
import {Event} from './org.hyperledger.composer.system';
// export namespace org.acme.Z2BTestNetwork{
   export class Buyer extends Member {
      buyerID: string;
   }
   export class Seller extends Member {
      sellerID: string;
   }
   export class Shipper extends Member {
      shipperID: string;
   }
   export class Provider extends Member {
      providerID: string;
   }
   export class FinanceCo extends Member {
      financeCoID: string;
   }
   export class Order extends Asset {
      orderNumber: string;
      items: string[];

该应用程序需要另一个导入语句才能正确运行。

import {Member} from './org.acme.Z2BTestNetwork.base';

这似乎是用于HyperLeDger-Composer的YO实现的错误。关于为此自动修复的任何建议吗?

note 如果选择了使用命名空间的YO选项,则仅从Sample.Cto中生成一个文件。base.cto文件不再导致.ts文件生成;但是,由于base.cto.cto.cto文件中定义的成员的缺少摘要定义。

这确实看起来像一个错误。我将调查,创建问题并解决。

直到固定错误为止,就有手动工作。那就是将必要的导入语句添加到base .TS文件中 - 在我的情况下,那就是org.acme.z2btestnetwork.ts文件。您在目标环境中需要的每个类都需要导入。由于我只缺少一个类(成员),因此只需要一个导入语句。

如果需要许多必需的导入语句,可以构建一个蛮力bash exec作为替代方案合并为替代方案。

相关内容

  • 没有找到相关文章

最新更新