我正在遵循有关设置管道以编译和部署合同并使用js文件的教程,但是tuturial使用0.4.17的solidity版本,而我下载的版本是最新版本(5 .something),因此我四处搜索,发现我需要使用此功能:loadRemoteVersion,以便与本教程兼容。但是我一直收到错误消息。另外,我也不确定是否已正确安装了某些依赖项。
我使用node compile.js运行脚本。
这是我正在尝试运行的用于编译坚固性代码的代码:
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const inboxPath = path.resolve(__dirname, 'contracts', 'Inbox.sol');
const source = fs.readFileSync(inboxPath, 'utf8').toString();
//console.log(solc.compile(source, 1));
solc.loadRemoteVersion('v0.4.1+commit.4fc6fc2c', function(err,
solcV04){
if (err) {
console.log("Oopsies");
}
console.log(solcV04.compile(source, 1));
});
这是合同代码:
pragma solidity ^0.4.17;
contract Inbox {
string public message;
constructor (string initialMessage) public {
message = initialMessage;
}
function setMessage(string newMessage) public {
message = newMessage;
}
}
'''
I should be getting a class dump but instead I am getting this:
{"errors":[{"type":"SOLCError","component":"solcjs","severity":"error","message":"Invalid import callback supplied","formattedMessage":"Error: Invalid import callback supplied"}]}
答案 0 :(得分:0)
我找到了解决方案,只是不知道版本如何运行良好,但是现在我完全卸载了solc,并为node.js安装了正确的编译器版本,因此不需要loadRemoteVersion函数。< / p>