Образец Truffle Dapp не работает при активной метамаске. Я запускаю testrpc, я импортировал закрытый ключ учетной записи tesrpc в Metamask, и Metamask подключается к локальному testrpc в соответствии с журналом консоли Chrome:
Using web3 detected from external source. If you find that your accounts don't appear or you have 0 MetaCoin, ensure you've configured that source properly. If using MetaMask, see the following link. Feel free to delete this warning. :) http://truffleframework.com/tutorials/truffle-and-metamask
Однако Metamask не показывает баланс эфира на счете, а на странице Dapp отображается пустая строка для баланса Metacoin.
Я отладил его, и кажется, что web.3eth.getBalance никогда не вызывает функцию обратного вызова, когда метамаска активна:
web3.eth.getBalance(myAccount, web3.eth.defaultBlock,
function(error,result){
if(error) {
console.error("Error while retrieving the balance for address["+myAccount+"]: "+err);
} else {
var balance = web3.fromWei(result.toNumber());
console.debug("Balance for address["+myAccount+"]: "+balance);
}
}
);
Он отлично работает, когда Metamask не активен.
Переустановите Metamask, создайте новую учетную запись Metamask, а затем импортируйте тот же закрытый ключ учетной записи testrcp, чтобы решить проблему.
Я не уверен, что было причиной. Тот же код начал работать после переустановки Metamask. Я даже не перезапускал testrpc и не переустанавливал код.
Другая возможность — запустить testrpc с параметрами -m и -u. Опция -m требует строки слов, которые вы получили при первой установке Metamsk. Опция -u разблокирует учетную запись. Командная строка для запуска testrpc будет выглядеть примерно так:
# testrpc -m "Insert your unlock words here" -u 0 -u 1
Если вы запустите testrpc таким образом, вы увидите, что первая учетная запись в разделе «Доступные учетные записи» будет первой учетной записью вашего Metamsk.
Установка четности с помощью Metamask приводит к поломке. Отключите четность и все должно работать. Я потратил час, чтобы понять это, но я до сих пор не знаю, почему это работает.
Я столкнулся с той же проблемой, и любой из ответов помог мне, я что-то попробовал, и это решилось.
Это сработало для меня.
Рексирус