2

我有一个由 express 生成器生成的 node.js 应用程序。我想使用 Metamask 插件注入的 web3 对象,但是当我尝试 console.log(process.web3) 时,它是未定义的。当我在浏览器的开发者控制台中输入 window.web3 时,它会返回 web3 对象。

有谁知道何时注入 web3 对象以及在快速应用程序中我可以分配类似

var web3 = process.web3;
4

2 回答 2

1

您是在尝试使用 web3.js 服务器端(在 Node.js 中)还是客户端(在浏览器中)?看起来你把这两种情况混在一起了。

客户端 web3.js 在浏览器加载 JS 库时初始化。通常,如果您使用类似的东西,$(document).ready()您将能够访问它。

但是,服务器端 web3.js 需要隐式初始化

于 2018-01-31T22:54:45.703 回答
0

你有没有尝试以下?我用它连接到由 metamask 注入的 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"));
    }
});

希望这可以帮助

于 2018-03-27T07:57:07.913 回答