【发布时间】:2022-07-27 01:24:24
【问题描述】:
我正在尝试部署 Terrain 的 Terra 合约:https://www.npmjs.com/package/@terra-money/terrain
为了部署计数器合约,我需要执行以下操作(我在 windows 10 上运行):
npx terrain deploy counter --signer validator
但是当我这样做时,我收到以下错误:
错误消息:docker:来自守护进程的错误响应:create $(pwd): "$(pwd)" 包括本地卷名的无效字符,仅 "[a-zA-Z0-9][a-zA- Z0-9_.-]”是允许的。如果您打算传递主机目录,请使用绝对路径。 请参阅“docker run --help”。
在网上搜索后,我发现问题是我在 windows 10 上运行,因此需要将 $pwd 替换为 %cd%。于是我进入Terrain库文件deployment.js,找到了导致这个错误的代码:
child_process_1.execSync(`docker run --rm -v "$(pwd)":/code \
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
cosmwasm/rust-optimizer-arm64:0.12.5`, { stdio: "inherit" });
现在,当我删除第二行 --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ 并将 $pwd 替换为 %cd% 时,我得到以下信息:
child_process_1.execSync(`docker run --rm -v "%cd%":/code \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
cosmwasm/rust-optimizer:0.12.5`, { stdio: "inherit" });
这似乎有效,因为它触发了构建和部署。但是,我删除了第二行。如果我添加第二行并使用 %cd% 删除 $pwd,我会得到以下信息:
child_process_1.execSync(`docker run --rm -v "%cd%":/code \
--mount type=volume,source="%(basename "%cd%")_cache%",target=/code/target \
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
cosmwasm/rust-optimizer:0.12.5`, { stdio: "inherit" });
但是,这不起作用。我收到以下错误
docker:来自守护进程的错误响应:create %(basename C:\Users\user\Desktop\Apps\Terra\my-dapp\contracts\counter)_cache%: "%(basename C:\Users\user\Desktop \Apps\Terra\my-dapp\contracts\counter)cache%" 包括本地卷名的无效字符,只有 "[a-zA-Z0-9][a-zA-Z0-9.-]”是允许的。如果您打算传递主机目录,请使用绝对路径。
这个错误看起来与我在 $pwd 中遇到的类似错误,但现在“basename”是问题所在。但我不知道如何解决这个问题。谁能帮帮我?
【问题讨论】:
标签: node.js docker smartcontracts terrain terra