npm测试在查询功能上失败(Hyperledger Composer)

时间:2018-04-23 14:21:50

标签: eslint hyperledger-composer

我在Hyperledger Composer上的事务函数代码上成功调用了命名查询。问题是,当我尝试使用npm test运行一组测试时,出现以下错误:

error  'query' is not defined  no-undef

出于演示目的,我已经使用yo hyperledger-composer:businessnetwork生成了一个新的业务网络框架,我使用以下查询添加了一个queries.qry文件:

query getParticipant{
  description: "Get participants with given first name"
  statement:
    SELECT org.acme.mynetwork.SampleParticipant WHERE (firstName == _$firstName)
}

我还修改了lib / logic.js文件以使用以下代码调用上一个查询的事务:

async function sampleTransaction(tx) {

    let participant = await query('getParticipant', { firstName: 'Alice' });
    console.log(participant);
} 

此代码在部署的网络上按预期工作。提交虚拟sampleTransaction时,我可以看到参与者Alice打印在docker日志上。但是,npm test因前面提到的错误而失败。

也许.eslintrc.yml文件中缺少一些东西,由自耕农自动生成......我真的不知道......

有谁知道如何解决这个问题?在将新代码部署到业务网络之前,它将真正简化开发过程,以便能够正确运行所有测试。

作为参考,我在互联网上发现的关于这个问题的唯一一件事是这个开放的问题,没有关于Hyperledger Composer github的评论: https://github.com/hyperledger/composer/issues/3775

谢谢!

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

这是抱怨你的TP功能的抱怨。你需要告诉eslint它还不知道的全局函数。如果您在此处查看贸易网络作为示例 https://github.com/hyperledger/composer-sample-networks/blob/master/packages/trade-network/lib/logic.js#L15 您将看到如何通知eslint全局函数声明。 我在这里列出了这一行,因为它只是一行注释 /* global getAssetRegistry getFactory emit query */