Solc
“無法導入 url”、“允許目錄之外的文件”使用 –standard-json
我試圖了解如何使用solidity 的JSON input-output API。這是我的 json 文件;
{ "language": "Solidity", "sources": { "StandardToken.sol": { "urls": [ "file:///home/myuser/myproject/contracts/vendor/StandardToken.sol" ] } } }
我對“正確”命令的最佳猜測是;
cat input.json | solc --allow-paths /home/myuser/myproject/contracts --standard-json
我嘗試了很多不同的相對路徑,以或不以斜杠結尾,在不同的目錄中執行命令等。但無論我嘗試什麼組合,我都會返回一個帶有此錯誤消息的 json 對象;
“無法導入 url ("file:///home/myuser/myproject/contracts/vendor/StandardToken.sol"):不支持文件導入回調”
我在
solc
0.4.24 版上得到了這個,但我升級到0.5.1+commit.c8a2cb62.Linux.g++
並得到了同樣的問題。奇怪的是,我收到了類似的資訊
solcjs
;$ cat input.json | solcjs --standard-json Cannot import url (\"file:///home/myuser/myproject/contracts/vendor/StandardToken.sol\"): File import callback not supported
似乎有很多 github 問題提到了這些錯誤消息,但我無法使用它們中的任何一個。
當我更改
input.json
為以下內容時,沒有“file://”並且使用反斜杠而不是正斜杠,solc 能夠導入 URL。{ "language": "Solidity", "sources": { "StandardToken.sol": { "urls": [ "\home\myuser\myproject\contracts\vendor\StandardToken.sol" ] } } }