Npm solcを使用して堅牢性スマートコントラクトをコンパイルしようとしています。私は別の例をたどろうとしました。例へのリンク: https://medium.com/coinmonks/how-to-compile-a-solidity-smart-contract-using-node-js-51ea7c6bf44
私は次のようにコードを書きました:
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)
助けてください。
どのバージョンのsolcを使用していますか?
Solcは先日、最新バージョンをリリースしました。このエラーはそれに関連しています。
npm uninstall solc
npm install [email protected]
最新バージョンを使用している場合。 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コンパイラのバージョンの不一致が原因です。使用するSolidityコンパイラのバージョンをメモまたは確認してください。例:仕事をしている場合
pragma solidity ^0.4.17
次のように、0.4.17 Solidity Compilerバージョンをインストールする必要があります。
npm install [email protected]
コマンドプロンプトまたはターミナルで。
これは通常、インストールしたSolidity CompilerとSolidityコントラクトファイルで使用しているSolidity Compilerバージョン間のアサーションエラーです。使用している場合
npm install --save [email protected]
macにsolcをインストールするには、次のようにソリッドファイルで同じバージョンのプラグマを使用してください
プラグマの堅牢性^ 0.4.25
最初にRemixでコードを確認してから、コンパイラーのバージョンを確認します
このようなエラーが表示される場合は、次の2つの手順を実行する必要があります。
Solcをアンインストールします。
npmアンインストールsolc
2つのバージョンのいずれかを再インストールします。
コースで使用されるバージョン:
npm install --save [email protected]
または
壊れない最新バージョン:
npm install --save [email protected]
ソース-Udemy-Ethereum and Solidity The Complete Developer's Guide