web-dev-qa-db-ja.com

npm solc:AssertionError [ERR_ASSERTION]:無効なコールバックが指定されました

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)

助けてください。

8
Mouazzam

どのバージョンのsolcを使用していますか?

Solcは先日、最新バージョンをリリースしました。このエラーはそれに関連しています。

npm uninstall solc
npm install [email protected]
20
Falko

最新バージョンを使用している場合。 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))));
5
kushal parikh

これは、solcパッケージのインストール中にインストールされたsolidityコンパイラと、solidityファイルに記載されているコンパイラのバージョンが一致しないためです。この問題を解決するには、

インストール:

npm install [email protected]

ソリッドファイルでの使用:

プラグマの堅牢性^ 0.4.25;

2
Atal Kumar

これは、Solidityコンパイラのバージョンの不一致が原因です。使用するSolidityコンパイラのバージョンをメモまたは確認してください。例:仕事をしている場合

pragma solidity ^0.4.17

次のように、0.4.17 Solidity Compilerバージョンをインストールする必要があります。

npm install [email protected]

コマンドプロンプトまたはターミナルで。

1
Rayed Bin Aslam

これは通常、インストールしたSolidity CompilerとSolidityコントラクトファイルで使用しているSolidity Compilerバージョン間のアサーションエラーです。使用している場合

npm install --save [email protected]

macにsolcをインストールするには、次のようにソリッドファイルで同じバージョンのプラグマを使用してください

プラグマの堅牢性^ 0.4.25

1
Saiteja Kuruva

最初にRemixでコードを確認してから、コンパイラーのバージョンを確認します

0
Russo

このようなエラーが表示される場合は、次の2つの手順を実行する必要があります。

  1. Solcをアンインストールします。

    npmアンインストールsolc

  2. 2つのバージョンのいずれかを再インストールします。

コースで使用されるバージョン:

npm install --save [email protected]

または

壊れない最新バージョン:

npm install --save [email protected]

ソース-Udemy-Ethereum and Solidity The Complete Developer's Guide