Web3js
使用者拒絕交易後將 Metamask 錯誤消息發送到 web3.js DApp
我正在建構一個簡單的 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 中的錯誤現在已修復,但錯誤消息現在都正確通過了……