web3 ist nicht definiert

Ich habe hier andere Fragen wie diese gelesen, aber keine hat mein Problem gelöst. Ich habe ein Terminalfenster, auf dem ich lief

geth --networkid=4 --rpc --rpcport 8545 --datadir=$HOME/.rinkeby --syncmode=light --ethstats='yournode:Respect my authoritah!@stats.rinkeby.io' --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304

basierend auf dem connect yourself-Abschnitt der Testkette Rinkeby .

Ich habe auch eine Knoten-App, die hat

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

und die ich nach dem Start von geth ausführe.

Das Terminal startet geth ohne Probleme und Ausgaben INFO [07-12|15:40:40] HTTP endpoint opened: http://127.0.0.1:8545. Ich verstehe nicht, warum meine Node-App Probleme hat, sich damit zu verbinden.

Der Fehler ist ReferenceError: web3 is not defined.

Hi. Hast du die web3Bibliothek auf deinem System installiert? (z. B. Knoten verwenden?)
Benötigen Sie --rpcapi="web3"int den geth-Befehl?
Das tue ich. Ich habe es zuvor mit derselben App erfolgreich verbunden, wollte es aber jetzt mit der Rinkeby-Kette verbinden.
Habe es gerade damit versucht (vollständiger Befehl: geth --networkid=4 --rpc --rpcapi="web3" --rpcport 8545 --datadir=$HOME/.rinkeby --syncmode=light --ethstats='yournode:Respect my authoritah!@stats.rinkeby.io' --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304) und den gleichen Fehler ausgegeben.
Ich denke, Sie vermissen das Flag --rpcaddr "127.0.0.1"?
Versuchen Sie: Web3 (neues Web3.providers.HttpProvider(" 127.0.0.1:8545" ))
Ich habe versucht, beides zu tun. --rpcaddr "127.0.0.1"Jsut vor dem hinzugefügt --rpcportund hinzugefügt Web3(new Web3.providers.HttpProvider("127.0.0.1:8545")). Wirft immer noch den Fehler.
versuchen Sie es mit var Web3 = require('ethereum_web3.js');und prüfen Sie, ob Sie alles korrekt installiert haben. Ich weiß nicht, ob dies der Fall ist oder nicht, aber hier habe ich Folgendes gesehen: "Web3.min.js in Ihre HTML-Datei aufnehmen. (nicht erforderlich für das Meteor-Paket)", prüfen Sie.

Antworten (1)

Ich habe geth als gestartet

geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304 --rpc --rpcapi=eth,web3, net,personal,ssh,db,Debug-Konsole

Und haben Sie diese Testdatei index.js

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

console.log(web3.eth.blockNumber);

Und es wird den aktuellen Block bei der Ausführung ausgebennode index.js

Ok, das scheint mit einer Einschränkung zu funktionieren: Ich bekomme die Blocknummer zurück als 0und das ändert sich nicht. Sollte es nicht die Rinkeby-Blockchain herunterladen und mir steigende Blocknummern zurückgeben?
Habe es herausgefunden, der Befehl sollte lauten geth --networkid=4 --datadir=$HOME/.rinkeby --syncmode=light --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303?discport=30304 --rpc --rpcapi=eth,web3,net,personal,ssh,db,debug console(Unterschied ist " .rinkeby" vs " rinkeby"). Block war null, da die Datei rinkeby.json (Genesis) nicht erkannt wurde. Ihre Antwort ist richtig, aber aus Gründen der Konsistenz würde ich das ändern, weil es in den Rinkeby-Tutorials so ausgelegt ist. Danke!
Sie haben Recht, ich hätte init ohne das '.' also bei mir hat es funktioniert.