blocknative / web3-onboard

Client library to onboard users to web3 apps
https://onboard.blocknative.com/
MIT License
813 stars 474 forks source link

web3 onboard vue version can't get provider value #2220

Closed rodweb2103 closed 1 month ago

rodweb2103 commented 1 month ago

Current Behavior

I got that error message when trying to send transaction using ethers Uncaught (in promise) TypeError: (intermediate value).providers is undefined

Expected Behavior

I need to get provider value

Steps To Reproduce

No response

What package is effected by this issue?

@web3-onboard/core

Is this a build or a runtime issue?

Runtime

Package Version

2.22.0

Node Version

No response

What browsers are you seeing the problem on?

No response

Relevant log output

No response

Anything else?

No response

Sanity Check

Adamj1232 commented 1 month ago

Hi @rodweb2103 can you provide a reproducible example?

rodweb2103 commented 1 month ago

A screenshot ?

Adamj1232 commented 1 month ago

@rodweb2103 no, a Minimal Reproducible example - please see link within the description above

rodweb2103 commented 1 month ago

https://github.com/blocknative/web3-onboard/assets/58430112/c9ad5cfa-14a6-49a5-b8d4-42457573fcde

Adamj1232 commented 1 month ago

@rodweb2103 this video doesnt really help - I have no idea how you have the provider setup in your codebase and cannot help with out that.

rodweb2103 commented 1 month ago

const walletConnectSDK = walletConnectModule(wcInitOptions); const coinbase = coinbaseWalletModule({ darkMode: true })

const onboard = init({ wallets: [walletConnectSDK,metamask,coinbase,injected], appMetadata: { name: "Payadox", // change to your dApp name description: "Payadox", recommendedInjectedWallets: [ { name: 'MetaMask', url: 'https://metamask.io' }, { name: 'Coinbase', url: 'https://wallet.coinbase.com/' } ] }, chains: [ { id: '0x1', token: 'ETH', label: 'Ethereum Mainnet', rpcUrl: MAINNET_RPC_URL }, { id: '0x2105', token: 'ETH', label: 'Base', rpcUrl: 'https://mainnet.base.org' } ] })

const { wallets, connectWallet, disconnectConnectedWallet, connectedWallet } = useOnboard()

const connect = async () => { const wallets = await onboard.connectWallet() console.log(wallets) console.log(connectedWallet);

if (wallets[0]) {

  const rawObject = {...wallets[0].provider};

  //const { wallets } = useOnboard()

  console.log(wallets);
  // create an ethers provider with the last connected wallet provider
  const ethersProvider = new ethers.providers.Web3Provider(connectedWallet.provider, 'any')
  // if using ethers v6 this is:
  // ethersProvider = new ethers.BrowserProvider(wallet.provider, 'any')

  const signer = ethersProvider.getSigner()

  // send a transaction with the ethers provider
  const txn = await signer.sendTransaction({
    to: '0x',
    value: 100000000000000
  })

  const receipt = await txn.wait()
  console.log(receipt)
}

}

Adamj1232 commented 1 month ago

Looks like you may need to use the return from connect to create the provider. If you could create a small project using repl or codepen I could help you debug but I am not able to without a reproducible example

rodweb2103 commented 1 month ago

ok but i used that code based on your documentation

rodweb2103 commented 1 month ago

it seems that your library is working fine only with react and is not working properly with vue 2 or vue 3