Ethereum Metamask获胜的原因是什么;即使交易已完成,是否仍显示确认提示?

Ethereum Metamask获胜的原因是什么;即使交易已完成,是否仍显示确认提示?,ethereum,web3,web3js,metamask,Ethereum,Web3,Web3js,Metamask,我正在使用Metamask和Web3构建一个dapp。合同中的一切似乎都很正常,但在我的dapp.send()函数中,如下面的与合同交互的函数似乎正常工作,我得到了收据,但在此之前,它们不会显示确认提示,让用户接受交易。它会自动被接受。在某个时候,我确实得到了提示,但它停止了,我不确定这是合同还是前端错误 有人能告诉我发生这种情况的潜在原因吗 async function addImage() { await contract.methods .addImage(this.p

我正在使用Metamask和Web3构建一个dapp。合同中的一切似乎都很正常,但在我的dapp.send()函数中,如下面的与合同交互的函数似乎正常工作,我得到了收据,但在此之前,它们不会显示确认提示,让用户接受交易。它会自动被接受。在某个时候,我确实得到了提示,但它停止了,我不确定这是合同还是前端错误

有人能告诉我发生这种情况的潜在原因吗

async function addImage() {
    await contract.methods
      .addImage(this.props.token, this.props.image)
      .send({
        from: accounts[0],
        gas: 6721975,
        gasPrice: "30000000",
      })
      .once("receipt", (receipt) => {
        console.log(receipt);
      })
      .catch((err) => {
        console.log(err);
      });
  }

好吧,我刚刚意识到这可能是因为Metamask不再注入web3。 如果我在代码中替换这一行

const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
为了


然后它就起作用了。确认提示打开。对于这两个库之间的相互干扰以及为什么web3不会打开Metamask仍然有点困惑,但这是一个好的开始。

好的,我刚刚意识到这可能是因为Metamask不再注入web3。 如果我在代码中替换这一行

const web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
为了

然后它就起作用了。确认提示打开。对于这两个库相互干扰以及为什么web3不打开Metamask,仍然有点困惑,但这是一个好的开始