node.js - DA Node Bindings Tutorial -- 'retrieve the package identifiers' 问题
问题描述
我正在完成教程。当我在“ping-pong”项目文件夹中运行后检查 template-ids.json 的内容时,npm run fetch-template-ids
如下所示:
{"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
)。
推荐阅读
- node.js - 代码在 NodeJS 上完成请求之前运行
- python - 计算熊猫列中条件组的百分比
- node.js - 仅在 npm 包中创建一个 var,“global”,而不是在 Nodejs 中创建整个项目
- security - 40x 响应中缺少安全标头的可能风险是什么?
- mysql - Mysql.plugin 丢失
- javascript - 为什么每次按下按钮我的动画速度都会增加?
- javascript - Laravel:选项卡窗格上的单击事件
- c++ - 如何使用 OpenMP 正确并行 for 循环
- powershell - powershell上的批处理文件中缺少执行
- azure - 使用 ADF 中的管道参数加载特定文件