我正在完成教程。当我在“ping-pong”项目文件夹中运行后检查 template-ids.json 的内容时,npm run fetch-template-ids
如下所示:
{"Car.Car":{"packageId":"9158c3e66ac2a78e427307b098f7a45e86ddcb40a9be6a26eea0d363e7b48a10","name":"Car.Car"}}
从输出来看,您正在为与教程随附的模型不同的模型生成模板标识符文件。
该脚本通过使用绑定连接到正在运行的分类帐并下载其中加载的模板及其包标识符来工作。默认情况下,它会尝试连接到localhost:7600
.
关于您观察到的行为的解释是,您在自己的机器上的端口 7600 上有一个正在运行的沙箱,该沙箱的模型加载了一个Car
包含模板的模块Car
。
您可以遵循方法。
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
使用额外选项运行脚本
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
)。