web3.isConnected() gibt false zurück, wenn eine Verbindung zu geth mit web3.js hergestellt wird

Ich bin völlig neu in Sachen Kryptowährung. Ich habe geth und web3 installiert . Ich möchte eine Webseite erstellen, die den Kontostand anzeigt. Ich starte geth mit dem folgenden Befehl

build/bin/geth --rpc  --rpcaddr 127.0.0.1 --rpcport 8545 --rpcapi web3,db,eth,net,personal

[ec2-user@ip ethereum]$ curl http://127.0.0.1:8545  
[ec2-user@ip ethereum]$ curl http://127.0.0.1:8545  
[ec2-user@ip ethereum]$ sudo netstat -nlp | grep :8545   tcp        0      0 127.0.0.1:8545              0.0.0.0:*                   LISTEN      18238/build/bin/get

Mein Code in stest.html ist:

<script src="web3.js/dist/web3.js"></script> 
<script>  
if (typeof web3 !== 'undefined') {  
  web3 = new Web3(web3.currentProvider);  
} else {  
  // set the provider you want from Web3.providers  
  var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545"));  
  //var web3 = new Web3('http://localhost:8545'); // TypeError:   this.provider.send is not a function
}  
console.log(web3); // {eth: .., shh: ...} // it's here!  
if(!web3.isConnected()) {  
  console.log("fail");  
} else {  
  console.log("succ");  
}  
//var coinbase = web3.eth.coinbase;  
//var balance = web3.eth.getBalance(coinbase);  
//console.log(web3.eth.accounts);  
var version = web3.version.api;  
console.log(version); // "0.2.0"  
var version = web3.version.node;  
console.log(version);

Ich erhalte die folgenden Fehler in der Browserkonsole, wenn ich stest.html ausführe:

Object { _requestManager: {…}, currentProvider: {…}, eth: {…}, db: {…}, shh: {…}, net: {…}, personal: {…}, bzz: {…}, settings: {…}, version: {…}, … }
stest.html:13:1


fail

0.20.5

Error: CONNECTION ERROR: Couldn't connect to node http://127.0.0.1:8545.
web3.js:3118:16

Source map error: request failed with status 404
Resource URL: http://34.215.167.9/plugins/ethereum/web3.js/dist/web3.js
Source Map URL: web3.js.map

Unten sind die Informationen, die ich vom Terminal erhalten habe:

[ec2-user@ip go-ethereum]$ build/bin/geth version  
Geth
Version: 1.8.0-unstable   
Git Commit: 722bac84fa503199b9c485c1a3e2bfba03bc487d  
Architecture: amd64  
Protocol Versions: [63 62]  
Network Id: 1  
Go Version: go1.8.4  
Operating System: linux  
GOPATH=
GOROOT=/usr/lib/golang
  1. Sorry für das Frageformat. Ich wollte so viele Informationen wie möglich hinzufügen. Bitte bearbeiten Sie die Frage oder fordern Sie weitere Informationen an.
  2. Wie kann ich den "Verbindungsfehler" vermeiden?
  3. Ist diese Methode zur Verbindung mit Ethereum korrekt?
  4. Wie kann ich meinen Code verbessern?
  5. Ich habe hier ein paar Fragen versucht, aber keine Antworten beheben meinen Fehler.

UPDATE : Jetzt gibt CURL nach dem Start mit dem folgenden Geth-Befehl ein Ergebnis aus

build/bin/geth --rpc --rpccorsdomain "http://localhost:8545"

$ curl -H "Content-Type: application/json" -X POST --data '{"jsonrpc":"2.0","method":"web3_clientVersion","params":[],"id":67}' http://127.0.0.1:8545  
{"jsonrpc":"2.0","id":67,"result":"Geth/v1.8.0-unstable-722bac84/linux-amd64/go1.8.4"}

Aber in der Browserkonsole wurde der Fehler in geändert

ReferenceError: Web3 is not defined
Sind Sie sicher, dass das Skript am angegebenen Speicherort <script src="web3.js/dist/web3.js"></script> vorhanden ist? Web3 ist nicht definiert - Ein Fehler beim Verknüpfen Ihrer Bibliothek?
Ja, das Skript wird geladen. Die Konsole zeigt keinen 404-Fehler an
Ich habe git web3 von github in dasselbe Verzeichnis wie stest.html geklont
<script> var Web3 = require('web3'); if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // set the provider you want from Web3.providers var web3 = new Web3(new Web3.providers.HttpProvider("http://127.0.0.1:8545")); //var web3 = new Web3('http://localhost:8545'); // TypeError: this.provider.send is not a function }

Antworten (1)

Eine Möglichkeit ist das CORS-Problem. Kann mit den angegebenen Informationen nicht sicher sein. Fügen Sie Ihrem geth-Startbefehl die folgende Option hinzu

--rpccorsdomain "*"
Error: CONNECTION ERROR: Couldn't connect to node http://127.0.0.1:8545.Das Problem bleibt.
Meine ist eine ec2-Instanz. Welche anderen Informationen können Ihnen beim Debuggen des Problems helfen?