web-dev-qa-db-ja.com

キャッチされなかったエラー:返された値は有効ではありませんが、ガスが不足していますか?

展開した契約のイベントを聞いています。トランザクションが完了してイベントが発生すると、応答を受信すると次のエラーが発生します。

キャッチされなかったエラー:返された値は有効ではありませんが、ガスが不足していますか? ABICoder.Push ../ node_modules/web3-eth-abi/src/indexのABICoder.Push ../ node_modules/web3-eth-abi/src/index.js.ABICoder.decodeParameters(index.js:227)にあります。 js.ABICoder.decodeLog(index.js:277)

Web3バージョン:1.0.0-beta36

メタマスクバージョン:4.16.0

それを修正するには?

5
ferit

これはweb3jsのバグで、議論された here です。

そして、次の変更はそれを修正します( source ):

patch-package
--- a/node_modules/web3-eth-abi/src/index.js
+++ b/node_modules/web3-eth-abi/src/index.js
@@ -280,7 +280,7 @@ ABICoder.prototype.decodeLog = function (inputs, data, topics) {


     var nonIndexedData = data;
-    var notIndexedParams = (nonIndexedData) ? this.decodeParameters(notIndexedInputs, nonIndexedData) : [];
+    var notIndexedParams = (nonIndexedData && nonIndexedData !== '0x') ? this.decodeParameters(notIndexedInputs, nonIndexedData) : [];

     var returnValue = new Result();
     returnValue.__length__ = 0;

編集:また、web3-1.0.0.beta33にダウングレードすると、この問題も修正されます。

3
ferit

トランザクション内で、同じ名前と同じ引数で異なるイベントを生成する場合、同じエラーをスローします。私の場合、これはTransferイベントがERC721およびERC20。そのうちの1つの名前を変更するとこの問題は解決しますが、もちろんこれは正しい方法ではありません。

0
Ivan Zakharov

コマンドtruffle migrate --resetを試して、以前のすべての値を元の値にリセットします

0
Ramesh babu

メタマスクログインを確認してください。この問題は通常、メタマスクからログアウトするか、アカウントに残っているイーサが0の場合に発生します。

0