DA 节点绑定教程 -- 'retrieve the package identifiers'问题



我正在学习本教程。当我在"乒乓球"项目文件夹中运行npm run fetch-template-ids后检查模板 ids.json 的内容时,它如下所示:

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

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

该脚本的工作原理是使用绑定连接到正在运行的账本,并下载其中加载的模板及其包标识符。默认情况下,它会尝试连接到localhost:7600

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

您可以遵循方法。

1. 在端口 7600 上重新启动教程沙盒

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

要找到正在运行的账本,您可以使用此答案。

当您在端口 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时指定不同的端口)。

相关内容

最新更新