0

我正在完成教程。当我在“ping-pong”项目文件夹中运行后检查 template-ids.json 的内容时,npm run fetch-template-ids如下所示:

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

1 回答 1

1

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

该脚本通过使用绑定连接到正在运行的分类帐并下载其中加载的模板及其包标识符来工作。默认情况下,它会尝试连接到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)。

于 2019-02-27T07:58:37.453 回答