我想编译我的以太坊HelloWorld.sol智能合约。在所有的教程中你是这样做的:
var solc = require('solc');
var compiledContract = solc.compile(fs.readFileSync('HelloWorld.sol').toString();
其中HelloWorld.sol为:
pragma solidity ^0.5.1;
contract HelloWorld {
bytes32 message;
constructor(bytes32 myMessage) public {
message = myMessage;
}
function getMessage() public view returns(bytes32){
return message;
}
}
换句话说,我把原始的Solidity合约代码放到solc.compile()方法中,但是这个过程在compiledContract
中出现了这样的错误:
'{"errors":[{"component":"general","formattedMessage":"* Line 1, Column 1\\n Syntax error: value, object or array expected.\\n* Line 1, Column 2\\n Extra non-whitespace after JSON value.\\n","message":"* Line 1, Column 1\\n Syntax error: value, object or array expected.\\n* Line 1, Column 2\\n Extra non-whitespace after JSON value.\\n","severity":"error","type":"JSONError"}]}'
我找了很长时间的解决办法,但我唯一发现的是
高级API由单个方法compile组成,该方法需要编译器标准输入和输出JSON。
标准的输入JSON看起来像是JSON和这个solidity代码的某种组合。
如何将solidity合约代码转换为编译器标准输入JSON?
我说这是编写合同的唯一方法,对吗?
3条答案
按热度按时间s3fp2yjn1#
这段代码对我很有效index.js
HelloWorld.sol
kuarbcqp2#
或者,您可以使用以下命令和输入数据运行solc(命令行工具
在上面的命令中,when--standard-json期望您可以提供一个输入json文件。
你可以在下面的链接中找到一个输入文件应该是什么样的例子。
来源:https://solidity.readthedocs.io/en/v0.4.24/using-the-compiler.html
raogr8fs3#