Nodejs

無法使用 nodejs 編譯合約

  • September 22, 2017

直到今天,一切都執行良好,當我嘗試使用readFileSync它時,它會為我[Function]提供各種文件。在我的範例中,當我嘗試編譯它給我的契約時

‘解析輸入 JSON 時出錯:* 第 1 行,第 1 列\n 語法錯誤:需要值、對像或數組。\n’

> code = fs.readFileSync('Voting.sol').toString
[Function]

> compiledCode = solc.compile(code)
{ errors: [ 'Error parsing input JSON: * Line 1, Column 1\n  Syntax error: value, object or array expected.\n' ] }

我重新安裝了 nodejs 和 npm,但仍然出現同樣的錯誤。有什麼幫助嗎?

將返回一個函式:

fs.readFileSync('Voting.sol').toString

雖然這會呼叫函式:

fs.readFileSync('Voting.sol').toString();

並且返回的不是函式,而是函式返回的值。

您的程式碼所做的是將對函式本身的引用保存在code變數中並將其傳遞給solc.compile()期望字元串並將函式隱式轉換為字元串,這反過來導致獲取函式的原始碼並嘗試解析它,這失敗的。

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