0

I am creating my first Dapp by using web3 1.0.0-beta.37 and trufflfe

While getting the accounts in app.js by using ganache-CLI and Metamask, I am getting following error.

Uncaught TypeError: e is not a function in the console 

Following is my code of App.js

import React, { Component } from 'react';
import './App.css';
import FormSubmitContract from './contracts/FormSubmit.json';
import getWeb3 from './utils/getWeb3.js';



class App extends Component {
  state = {
  web3:null,
  address:null,
};

 componentDidMount = async () =>{
 try{
    const web3 = await getWeb3();
    console.log(web3);
    const accounts = await web3.eth.getAccounts();
    console.log(accounts);
    const networkId = await web3.eth.net.getId();
    const deployedNetwork = FormSubmitContract.networks[networkId];
    const  instance = new web3.eth.contract(FormSubmitContract.abi, 
    deployedNetwork, deployedNetwork.address);
 }catch(error){
  console.log(error);
 }
}

I am able to print the web3 in console log

Proxy {_requestManager: s, currentProvider: MetamaskInpageProvider, eth: r, db: e.exports, shh: a, …}

But got undefined in

const accounts = await web3.eth.getAccounts();
console.log(accounts); ==> undefined

I think there has been change in web3 1+ versions for getting the accounts.

Help me. Thanks in advance

2 Answers 2

0

In Metamask, go to Setting -> Privacy & Security -> deactive the "Privacy Mode" option.

If you want to use the Privacy Mode then you have to modify your code

https://medium.com/metamask/eip-1102-preparing-your-dapp-5027b2c9ed76

1

Couple of things to experiment with:

  1. Try using web3 1.0.0-beta.35
  2. Are you calling window.ethereum.enable() to unlock the selected user account?
   const { ethereum } = window
   if (ethereum) {
      try {
        const web3 = new Web3(ethereum)
        const selectedAccount = await ethereum.enable()
        if (!selectedAccount) {
          // User didn't give permission for dapp to access wallet
          console.log('User opted out')
        } else {
          // User allowed access
          console.log('user gave access!')
        }
        return web3
      } catch (error) {
        // whoopsie!
        console.log(error)
      }
2
  • What is it is not the ethereum and it's web3? if (window.web3) { const web3 = window.web3; console.log("Injected web3 detected."); resolve(web3); } Commented Jun 4, 2019 at 6:10
  • For security reasons, the community is encouraged to follow EIP-1102. Please refer to this article: medium.com/metamask/eip-1102-preparing-your-dapp-5027b2c9ed76
    – amal
    Commented Jun 4, 2019 at 13:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.