[英]Web3 getAccounts doesn't update when I switch Metamask addresses in browser
我有一個連接到基本前端的節點應用程序,服務器中的get
調用之一是獲取用戶的地址。 它第一次工作,但是,當我在網站的 Metamask 插件中手動切換地址/帳戶時,它不會更新,而是停留在舊地址上。
作為參考,我只是使用並連接到在我的筆記本電腦上打開的 ganache 測試網絡。
下面的相關代碼,首先是server.js
:
const express = require('express')
const app = express()
const port = 3000
const Web3 = require('web3');
const WEB3_PROVIDER = "HTTP://127.0.0.1:7545"
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
console.log("web3 already initialized.");
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider(WEB3_PROVIDER));
console.log("New web3 object initialized.");
}
app.get('/', (req, res) => {
res.sendFile('./main.html', { root: __dirname });
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
app.get('/get-account', async (_req, res) => {
try {
web3.eth.getAccounts().then(function(accs){
this_acc = accs[0];
console.log("account :: "); console.log(this_acc);
return res.send(this_acc);
})
} catch (e) { throw e; }
});
然后main.html
頁面調用具有以下相關片段的client.js
:
async function updateUserAddr() {
console.log("updateUserAddr");
const response = await fetch('/get-account');
var addr_str = await response.text();
console.log(addr_str);
$('#address_id_poster').text(addr_str);
}
updateUserAddr();
第一次運行它記錄正確的地址,讓我在html頁面上顯示它。 但隨后我從 Metamask 中刪除了該帳戶,添加了一個不同的帳戶,然后重新啟動並刷新,它顯示了相同的舊帳戶。
此代碼不會更新 Metamask 中的帳戶更改的任何原因? 我怎樣才能解決這個問題? 非常感謝幫助。
TI 認為當瀏覽器下載任何東西時,它都會緩存,而 fetch() 也會緩存結果。 更改 fetch 的選項:
const response = await fetch(url, {
method: 'GET',
// this should invalidate caching
cache: 'no-cache',
});
每次刷新頁面時,這都應該發出一個新請求
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.