Автономный локальный клиент Metamask Injection

Это слишком запутанно для меня. Я пробовал все.

Если я запускаю код в node.js с помощью браузера... все работает нормально.

Нет, я хочу запустить его на своем веб-сервере. Как заявляет MetaMask, он больше не будет внедрять глобальный объект web3. Итак, я загружаю web3.js здесь и добавляю его в html-файл с помощью: Ok. Теперь я делаю:

   window.addEventListener('load', function () {

     if (typeof Web3 !== 'undefined') {
        window.web3 = new Web3(window.web3.currentProvider);
        console.log('Found web3!');
        console.log('Your Account: '+ web3.eth.accounts[0]);
        startApp();
     } else {
        console.log("No web3!");
        getWeb3();
     }
});

Но это дает мне

Невозможно прочитать свойство «currentProvider» неопределенного

Хорошо, я тогда попробовал:

    if (typeof Web3 !== 'undefined') {
        web3 = new Web3(web3.currentProvider);

возвращает:

web3 не определен

Я также пробовал разные вещи, такие как:

    if (typeof Web3 !== 'undefined') {
        var web3 = new Web3(window.web3.currentProvider);

Ну, что бы я ни пытался, я терплю неудачу. Я неправильно понял концепцию?

Как я могу разместить веб-сайт и подключиться к провайдеру MetaMask?

Ответы (1)

Ладно, думаю, я сам разобрался.

https://github.com/MetaMask/faq/blob/master/DEVELOPERS.md

указано в первом абзаце

Http(s) — требуется веб-сервер Из-за ограничений безопасности браузера мы не можем обмениваться данными с dapps, работающими на file://. Пожалуйста, используйте локальный сервер для разработки.

Ничего. Но, может быть, это поможет кому-то еще.

объект по-прежнему иногда не определен, а иногда нет. но это точно другая проблема :/