无法获取元掩码帐户

时间:2019-04-18 05:10:10

标签: reactjs solidity web3js metamask

我曾经获得过Metamask帐户地址,但突然我无法获得帐户并收到此错误。

Uncaught (in promise) Error: No valid "from" address specified in neither the given options, nor the default options.

我指定了这样的地址

const accounts = await web3.eth.getAccounts()
    this.setState({ account: accounts[0] })

此代码中发生错误

createPlace(name) {
    this.setState({ loading: true })
    this.state.placeList.methods.createPlace(name).send({ from: this.state.account })
    .once('receipt', (receipt) => {
      this.setState({ loading: false })
    })
  }

我的代码有问题吗?

请给我任何建议吗?

1 个答案:

答案 0 :(得分:0)

在这种情况下,Metamask无法连接到浏览器并将web3注入浏览器。

一个解决方案可以是 您的代码中可能会有一行检查 CurrrentProvider

例如:

if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
  // We are in the browser and metamask is running.
  web3 = new Web3(window.web3.currentProvider);
} 

将行更改为

window.web3.currentProvider.enable()

并保存文件,同时保持服务器运行。

这应该对您有用。

您可以做的另一件事是在try块中编写逻辑代码,然后执行

window.web3.currentProvider.enable()