未捕获的错误:返回的值无效,是否用完了?

fer*_*rit 5 events abi ethereum solidity web3-donotuse

我正在听我已部署合同的事件。每当事务完成并触发事件时,收到响应都会导致以下错误:

未捕获的错误:返回的值无效,是否用完了?位于ABICoder.push ../ node_modules / web3-eth-abi / src / index.js.ABICoder.push ../ node_modules / web3-eth-abi / src / index处的ABICoder.decodeParameters(index.js:227)。 js.ABICoder.decodeLog(index.js:277)

Web3版本:1.0.0-beta36

Metamask版本:4.16.0

如何解决?

小智 7

尝试该命令,truffle migrate --reset以便将所有先前的值重置为其原始值


小智 5

在事务内部生成具有相同名称和相同参数的不同事件时抛出相同的错误。就我而言,这是来自ERC721ERC20Transfer事件。重命名其中一个可以解决这个问题,但这当然不是正确的方法。


fer*_*rit 4

这是 web3js 中的一个错误,在这里讨论。

以下更改修复了它(来源):

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;
Run Code Online (Sandbox Code Playgroud)

编辑:降级到 web3-1.0.0.beta33 也解决了这个问题。