Web3js

使用者拒絕交易後將 Metamask 錯誤消息發送到 web3.js DApp

  • January 23, 2020

我正在建構一個簡單的 HTML/JavaScript 前端,以使用 web3.js 和 MetaMask 與智能合約進行互動。

我有一個函式可以呼叫其中一種方法,以便向智能合約發送貢獻,如下所示:

function sendContribution() {
 let sendAmount = web3.utils.toBN(document.getElementById("contributionAmt").value);
 contractInstance.methods.contribute().send( {
   from: defaultAccount,
   value: sendAmount
 }).then (function (result) {
   console.log(result);
 }).catch (function (error){
   console.error(error);
   showMessage("alert alert-danger", error);
 });

該功能工作正常 - 呼叫時會打開 MetaMask 乙太坊視窗以允許我批准交易,它會毫無問題地處理交易。

但是,如果我在 MetaMask 視窗中“拒絕”事務,我會在控制台日誌中收到兩條錯誤消息,第一條來自 MetaMask,其中包含錯誤原因,第二條來自 web3,僅帶有通用“內部 JSON-RPC 錯誤” :

控制台日誌

根據上面的程式碼,我正在為使用者顯示任何錯誤消息,但這僅顯示一般的 web3 錯誤並且不顯示 MetaMask 消息。

我的問題是如何擷取 MetaMask 消息?

不確定這是我的錯誤還是 MetaMask 或 web3 中的錯誤現在已修復,但錯誤消息現在都正確通過了……在此處輸入圖像描述

引用自:https://ethereum.stackexchange.com/questions/74675