Я пытаюсь получить идентификатор сети из объекта Web3 на стороне клиента (т.е. при запуске кода Javascript в браузере). У меня есть код, который подтверждает, что объект существует, и он существует. У меня установлено и настроено расширение Metamask в Chrome. Я нажал на расширение, и я определенно подключен к сетевому клиенту Ganache (Localhost 8545). Однако каждый раз, когда я звоню, **web3.version.getNetwork()**
результат **undefined**
. Кто-нибудь знает, почему это происходит и как я могу это исправить?
ОБНОВЛЕНИЕ: я попробовал тот же тест с web3.eth.getAccounts() , и он тоже возвращается undefined . Я предполагаю, что получу тот же результат с любым из методов/свойств Web3, которые я попробую.
// Make sure the Web3.js object has been defined.
web3_helpers.web3AndMetamaskCheck();
if (typeof gameDetailsObj == 'undefined' || gameDetailsObj == null)
throw new Error(errPrefix + 'The game details object is unassigned.');
if (typeof currentUserObj == 'undefined' || currentUserObj == null)
throw new Error(errPrefix + 'The current user object is unassigned.');
// >>>>> getNetworkCall is ALWAYS 'undefined'.
var getNetworkCall = web3.version.getNetwork();
Да, ваше право вернет undefined. Поскольку web3.version.getNetwork() не является методом синхронизации и не возвращает никакого значения. В javascript, если функция не возвращает какой-либо метод, она будет инициализировать переменную undefined. См. ниже код для ссылки:
web3.version.getNetwork(function(err, networkId){
switch(networkId){
case "1":
//TODO your logic...
break;
default:
//If neteork id is not mattching...
}
});