Uncaught SyntaxError: await只在异步函数和模块的顶层体中有效


const accounts = await web3.eth.getAccounts();
App = {
load: async () => {
await App.loadWeb3(
await App.loadAccount()
)
},

loadWeb3: async () => {
if (typeof web3 !== 'undefined') {
App.web3Provider = web3.currentProvider
web3 = new Web3(web3.currentProvider)
} else {
window.alert("Please connect to Metamask.")
}
// Modern dapp browsers...
if (window.ethereum) {
window.web3 = new Web3(ethereum)
try {
// Request account access if needed
await ethereum.enable()
// Acccounts now exposed
web3.eth.sendTransaction({/* ... */})
} catch (error) {
// User denied account access...
}
}
// Legacy dapp browsers...
else if (window.web3) {
App.web3Provider = web3.currentProvider
window.web3 = new Web3(web3.currentProvider)
// Acccounts always exposed
web3.eth.sendTransaction({/* ... */})
}
// Non-dapp browsers...
else {
console.log('Non-Ethereum browser detected. You should consider trying MetaMask!')
}
},
loadAccount: async () => {
App.account = web3.eth.accounts[0]
console.log(App.account)
}
}
$(() => {
$(window).load(() => {
App.load()
})
})

错误在第1行,我从Ganache获得帐户,但await仅对async有效。
我应该在此代码中进行哪些更改以删除错误?请帮帮我。

如果我删除这一行,错误说它不能访问帐户,之后await不工作。

是否有任何方法使这段代码在ASYNC函数的形式?

await调用只能在标记为async的函数中进行。因为您在第1行中使用了await,所以它没有包装在async函数中。您可以将代码封装在async函数中,然后调用该函数。例如:

const main = async () => { // <- the async wrapper function
const accounts = await web3.eth.getAccounts();
// .... rest of your code
$(() => {
$(window).load(() => {
App.load()
})
})
}
main()

或者如果你想更高级,根本不保存函数

(async ()=>{
const accounts = await web3.eth.getAccounts();
// .... rest of your code
})() // <- call the function right after declaring it

相关内容

  • 没有找到相关文章

最新更新