我正在尝试使用npm solc编译可靠性智能合约。我试着遵循不同的例子。链接到示例:https://medium.com/coinmonks/how-to-compile-a-solidity-smart-contract-using-node-js-51ea7c6bf440
我编写了如下代码:
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const helloPath = path.resolve(__dirname, 'contracts', 'hello.sol');
console.log("First" + helloPath);
const source = fs.readFileSync(helloPath, 'UTF-8');
console.log("Second" + source);
console.log(solc.compile(source, 1));
运行上面的代码时出现以下错误。
AssertionError [ERR_ASSERTION]: Invalid callback specified.
at wrapCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:16:5)
at runWithReadCallback (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:37:42)
at compileStandard (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:78:14)
at Object.compileStandardWrapper (C:\Users\mouazzamj058\solc_example\node_modules\solc\wrapper.js:85:14)
at Object.<anonymous> (C:\Users\mouazzamj058\solc_example\example.js:4:19)
at Module._compile (module.js:652:30)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
请帮忙。
如果您使用的是最新版本,即。 0.5.9编译代码的方式有变化。
const path = require('path');
const fs = require('fs');
const solc = require('solc');
const helloPath = path.resolve(__dirname, 'contracts', 'hello.sol');
const source = fs.readFileSync(helloPath, 'UTF-8');
var input = {
language: 'Solidity',
sources: {
'hello.sol' : {
content: source
}
},
settings: {
outputSelection: {
'*': {
'*': [ '*' ]
}
}
}
};
console.log(JSON.parse(solc.compile(JSON.stringify(input))));
这是因为在solc软件包安装期间安装的可靠性编译器的版本不匹配以及在solidity文件中提到的编译器。要解决此问题,请尝试
安装:
在solidity文件中使用:
这是因为Solidity编译器的版本不匹配。请注意或验证您要使用的可靠性编译器版本。例如:如果你正在做的工作
pragma solidity ^0.4.17
那么你必须安装0.4.17 solidity编译器版本,如下所示:
npm install [email protected]
在命令提示符或终端中。
这通常是您已安装的可靠性编译器与您在solidity合同文件中使用的可靠性编译器版本之间的断言错误。如果你正在使用
npm install --save [email protected]
要在你的mac中安装solc,请在你的solidity文件中使用相同版本的pragma,如下所示
固体物^ 0.4.25
首先检查Remix中的代码,然后检查编译器版本
如果您看到这样的错误。您必须执行以下两个步骤。
课程中使用的版本:
npm install --save [email protected]
要么
最新版本不会破坏:
npm install --save [email protected]
来源 - Udemy - 以太坊和Solidity完整的开发人员指南