展開した契約のイベントを聞いています。トランザクションが完了してイベントが発生すると、応答を受信すると次のエラーが発生します。
キャッチされなかったエラー:返された値は有効ではありませんが、ガスが不足していますか? 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
それを修正するには?
これは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にダウングレードすると、この問題も修正されます。
トランザクション内で、同じ名前と同じ引数で異なるイベントを生成する場合、同じエラーをスローします。私の場合、これはTransferイベントがERC721およびERC20。そのうちの1つの名前を変更するとこの問題は解決しますが、もちろんこれは正しい方法ではありません。
コマンドtruffle migrate --reset
を試して、以前のすべての値を元の値にリセットします
メタマスクログインを確認してください。この問題は通常、メタマスクからログアウトするか、アカウントに残っているイーサが0の場合に発生します。