Lokaler eigenständiger Client für Metamask-Injektion

Es ist mir zu verwirrend. Ich habe alles versucht.

Wenn ich den Code in node.js mit browserfy ausführe, funktioniert alles einwandfrei.

Nein, ich möchte es auf meinem Webserver ausführen. Wie MetaMask angibt, wird das globale web3-Objekt nicht mehr injiziert. Also lade ich die web3.js hier herunter und füge sie in die html-Datei ein mit: Ok. Jetzt mache ich:

   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();
     }
});

Aber das gibt mir

Eigenschaft 'currentProvider' von undefined kann nicht gelesen werden

Ok, ich habe es dann versucht:

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

kehrt zurück:

web3 ist nicht definiert

Ich habe auch verschiedene Thins ausprobiert wie:

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

Was ich auch versuche, ich scheitere. Habe ich das Konzept falsch verstanden?

Wie kann ich eine Website hosten und mich mit dem MetaMask-Anbieter verbinden?

Antworten (1)

Okay, ich glaube, ich habe es selbst herausgefunden.

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

heißt es im ersten Absatz

Http(s) - Webserver erforderlich Aufgrund von Browser-Sicherheitseinschränkungen können wir nicht mit dapps kommunizieren, die auf file:// ausgeführt werden. Bitte verwenden Sie einen lokalen Server für die Entwicklung.

Egal. Aber vielleicht hilft es jemand anderem.

das Objekt ist immer noch manchmal undefiniert und manchmal nicht. aber das ist sicher ein anderes problem :/