Solidity
使用 solc 編譯後未定義的contracts.contractName
使用 solc 編譯智能合約後。我遇到了一些問題,並且會喜歡一些用於調試/故障排除的指針。
描述
$ node > var solc = require("solc") > var src = `contract yoThere { string public msg; function yoThere() { msg = "Hey lol"; } function greet() constant returns(string) { return msg; } } ` > var comp = solc.compile(src)
- 檢查契約
> comp.contracts.yoThere undefined
不過,如果我嘗試
comp.contracts
它會返回整個契約。例如,我想做的是comp.contracts.yoThere.bytecode
。我不知道名字前的冒號
:yoThere
是否表明我做錯了什麼:> comp.contracts { ':yoThere': { assembly: { '.code': [Array], '.data': [Object] }, // ...
任何正確方向的幫助或指示將不勝感激。
根據 solc-js 的 github issue 83,“如果你從不是文件的東西編譯,編譯器會使用空文件名並添加一個
:
單獨的文件名和合約名。”這似乎是從 solc 0.4.9 引入的。
由於添加了冒號(如對原始問題的評論中所述),
comp.contracts[":yoThere"].bytecode
因此提供了所需的輸出。如果不需要添加冒號,請從文件編譯。