Ethereum Metamask(Chrome)web3.js控制台:ETH事务问题(同步方法)和#x2B;web3.0版本

Ethereum Metamask(Chrome)web3.js控制台:ETH事务问题(同步方法)和#x2B;web3.0版本,ethereum,web3js,metamask,Ethereum,Web3js,Metamask,我通过Google Chrome控制台使用Metamask(Chrome扩展)和web3.jsAPI。 然而,我有两个问题: 1) 我正在尝试使用Ganache GUI(localhost 7545)发送simpletransaction,并输入以下代码: >以太坊.enable() 然后,我收到以下错误消息: > Uncaught Error: The MetaMask Web3 object does not support synchronous methods like eth_s

我通过Google Chrome控制台使用Metamask(Chrome扩展)和web3.jsAPI。 然而,我有两个问题:

1) 我正在尝试使用Ganache GUI(localhost 7545)发送simpletransaction,并输入以下代码:

>以太坊.enable()

然后,我收到以下错误消息:

> Uncaught Error: The MetaMask Web3 object does not support synchronous methods like eth_sendTransaction without a callback parameter. See https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client for details.
    at MetamaskInpageProvider._sendSync (inpage.js:1)
    at MetamaskInpageProvider.send (inpage.js:1)
    at Proxy.t.send (inpage.js:1)
    at a.send (inpage.js:1)
    at w.e [as sendTransaction] (inpage.js:1)
    at <anonymous>:1:10
>未捕获错误:MetaMask Web3对象不支持没有回调参数的同步方法,如eth_sendTransaction。看见https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-有关详细信息,请参阅all async---think-of-metamask-as-a-light-client。
在MetamaskInpageProvider.\u sendSync(inpage.js:1)
在MetamaskInpageProvider.send上(inpage.js:1)
在Proxy.t.send(inpage.js:1)
at a.send(inpage.js:1)
在w.e[as sendTransaction](inpage.js:1)
目前,web3.jsapi的新版本似乎是1.2.4。在使用Metamask扩展时,有没有办法在chrome控制台中更新web3.js API版本?
请注意,我已尝试在控制台
web3=new web3(web3.currentProvider)
中输入该值,但
web3.version
仍为0.20.7

就优先事项而言,我认为更为关键

你能帮忙吗


感谢您回答第一个问题,这可能正是错误所说的:Web3对象不支持同步方法,这意味着在调用Web3.eth.sendTransaction时,您必须提供回调,因此当操作完成时,您将在回调中得到结果,因为这是一个异步操作

这是正确的实现:

   web3.eth.sendTransaction(transaction,function(err, transactionHash) {
      if (!err)
        console.log(transactionHash); 
    }
对于第二个问题,您可以更新metamask提供的web3 包括web3 js文件的相关标记,然后执行以下操作:

web3 = new Web3(web3.currentProvider);
  • web3将在不久的将来被弃用,取而代之的是以太坊提供商
> Uncaught Error: The MetaMask Web3 object does not support synchronous methods like eth_sendTransaction without a callback parameter. See https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md#dizzy-all-async---think-of-metamask-as-a-light-client for details.
    at MetamaskInpageProvider._sendSync (inpage.js:1)
    at MetamaskInpageProvider.send (inpage.js:1)
    at Proxy.t.send (inpage.js:1)
    at a.send (inpage.js:1)
    at w.e [as sendTransaction] (inpage.js:1)
    at <anonymous>:1:10
   web3.eth.sendTransaction(transaction,function(err, transactionHash) {
      if (!err)
        console.log(transactionHash); 
    }
web3 = new Web3(web3.currentProvider);