У меня тоже возникла такая же проблема при работе над DApp с Rinkeby testnet с Metamask.
Когда у меня был web3.js
файл, как показано ниже
import Web3 from 'web3';
let web3;
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
// We are in the browser and metamask is running.
web3 = new Web3(window.web3.currentProvider);
} else {
// We are on the server *OR* the user is not running metamask
const provider = new Web3.providers.HttpProvider(
'Infura API key'
);
web3 = new Web3(provider);
//window.web3.currentProvider.enable();
}
export default web3;
и когда я бегу
npm start
или npm run dev
(зависит от вашего стартового скрипта)
Браузер выдавал сообщение об ошибке «uncaught error: No 'from' address указано»
Когда я открыл консоль браузера и сделал web.currentProvider
, он выдал ту же ошибку.
Итак, стало ясно, что Метамаска не устанавливает связь с браузером.
Что я сделал, это
Я держал браузер включенным в Metamask.
И изменил web3.js на время работы сервера в командной строке и сохранил файл.
import Web3 from 'web3';
let web3;
if (typeof window !== 'undefined' && typeof window.web3 !== 'undefined') {
// We are in the browser and metamask is running.
//Note: change to window.web3.currentProvider.enable()
web3 = new Web3(window.web3.currentProvider.enable());
} else {
// We are on the server *OR* the user is not running metamask
const provider = new Web3.providers.HttpProvider(
'Infura API'
);
web3 = new Web3(provider);
//window.web3.currentProvider.enable();
}
export default web3;
как только вы сохраните файл
Метамаска выдает сообщение, что хочет установить соединение с вашей учетной записью.
Нажмите да.
и удалите .enable () из приведенного выше кода и сохраните свой код.
Это может быть временное решение, но да, оно работает!