Когда объект web3 внедряется на веб-страницу?

У меня есть приложение node.js, созданное экспресс-генератором. Я хочу использовать объект web3, введенный плагином Metamask, но когда я пытаюсь выполнить console.log(process.web3), он не определен. Когда я набираю window.web3 в консоли разработчика браузера, он возвращает объект web3.

Кто-нибудь знает, когда вводится объект web3 и где в экспресс-приложении я могу назначить что-то вроде

var web3 = process.web3;

person shnoop    schedule 31.01.2018    source источник


Ответы (2)


Вы пытаетесь использовать web3.js на стороне сервера (внутри Node.js) или на стороне клиента (внутри браузера)? Похоже, вы смешиваете эти два случая.

Клиентский web3.js инициализируется, когда библиотека JS загружается браузером. Обычно, если вы используете что-то вроде $(document).ready(), вы сможете чтобы получить к нему доступ.

Однако серверный web3.js требует неявной инициализации.

person YinYang16    schedule 31.01.2018

Вы пробовали следующее? Я использую это для подключения к web3, введенному метамаской.

import { default as Web3} from 'web3';

...

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

    // Checking if Web3 has been injected by the browser (Mist/MetaMask)
    if (typeof web3 !== 'undefined') {
        console.warn("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")
        // Use Mist/MetaMask's provider
        window.web3 = new Web3(web3.currentProvider);
    } else {
        console.warn("No web3 detected. Falling back to http://127.0.0.1:8545. You should remove this fallback when you deploy live, as it's inherently insecure. Consider switching to Metamask for development. More info here: http://truffleframework.com/tutorials/truffle-and-metamask");
        // fallback - use your fallback strategy (local node / hosted node + in-dapp id mgmt / fail)
        window.web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));
    }
});

Надеюсь это поможет

person Ve9    schedule 27.03.2018