DA节点绑定教程-“检索包标识符”问题

时间:2019-02-26 18:41:14

标签: node.js daml

我正在研究tutorial。在'ping-pong'项目文件夹中运行npm run fetch-template-ids后,当我检查template-ids.json的内容时,它看起来如下:

{"Car.Car":{"packageId":"9158c3e66ac2a78e427307b098f7a45e86ddcb40a9be6a26eea0d363e7b48a10","name":"Car.Car"}}

1 个答案:

答案 0 :(得分:1)

从输出来看,您似乎正在为与本教程一起提供的模型不同的模型生成模板标识符文件。

该脚本通过使用绑定来连接到正在运行的分类帐,并下载带有其程序包标识符的加载模板来工作。默认情况下,它会尝试连接到localhost:7600

有关所观察到的行为的解释是,您自己的计算机上的端口7600上有一个正在运行的沙箱,该沙箱的模型加载了包含模板Car的模块Car

您可以遵循方法。

1。在端口7600上重新启动教程沙箱

  • 找到并停止在端口7600上运行的沙箱
  • 从教程项目中重新启动沙箱
  • 确保重新启动的分类帐在端口7600上运行
  • 照常运行npm run fetch-template-ids

要找到正在运行的分类帐,可以使用this answer

当您在7600端口上找到分类帐繁忙时,我的建议是转到其项目目录并运行da stop,而不是将其杀死。项目目录应该易于识别,这是作为参数传递的DAR文件所在路径的一部分。

例如,如果命令包含以下路径作为参数

/home/someuser/path/to/your-daml-project/target/PingPongExample.dar

您要执行以下操作

cd /home/someuser/path/to/your-daml-project
da stop

2。使用其他端口运行教程

  • 检查教程沙箱在哪个端口上运行
  • 使用附加选项运行脚本

        npm run fetch-template-ids -- -p <PORT_NUMBER>
        #                          ^^ notice the double dash here
    

如果不确定正在运行教程沙箱的端口,则可以通过以下命令从教程项目目录中停止并重新启动它来进行检查:从教程项目目录

da stop && da sandbox

输出应如下所示

stopping... Sandbox ledger server
/path/to/daml/PingPong.daml with no scenario
and binding to port 7676
[Info] Starting:
    Sandbox ledger server
    /home/ste/Projects/DACH-NY/pooong/daml/PingPong.daml with no scenario
    and binding to port 7676

如果该输出看起来像这样,则必须运行以下命令来获取模板标识符:

npm run fetch-template-ids -- -p 7676

此外,请注意本教程假设您使用的是在端口7600上运行的分类帐。如果您采用第二种方法,请确保进行必要的安排以连接到正确的分类帐(我相信唯一需要做的更改是在调用DamlLedgerClient.connect时指定另一个端口。