Solc

“無法導入 url”、“允許目錄之外的文件”使用 –standard-json

  • December 19, 2018

我試圖了解如何使用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"):不支持文件導入回調”

我在solc0.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"
     ]
   }
 }
}

引用自:https://ethereum.stackexchange.com/questions/64284