Warum kann ich mich nicht per IPC verbinden?

Ich habe erfolgreich ausgeführt geth --rpc, um einige Funktionen zu testen, aber ich brauche die personalAPI, die laut dieser Antwort von IPC ausgeführt werden sollte.

Wenn ich laufe

geth --ipcapi "db,eth,net,web3,personal" --ipcpath /tmp/geth.ipc

Dadurch wird die IPC-Datei erstellt und Geth scheint ansonsten normal zu starten.

Ich habe die folgenden npm-Module installiert:web3 web3_extended web3_ipc

Dann führe ich dies auf nodejs aus:

var web3_extended = require('web3_extended');

var options =
{
    host:     '/tmp/geth.ipc',
    ipc:      true,
    personal: true, 
    admin:    false,
    debug:    false
};

var web3 = web3_extended .create (options);

var coinbase = web3.eth.coinbase;

Die letzte Zeile gibt mir eine HTML-Antwort, die enthält

Your browser sent a request that this server could not understand.

und

Apache/2.4.12 (Ubuntu) Server at localhost Port 80

Diese Apache-Zeile lässt mich glauben, dass nodejs nicht einmal versucht, eine Verbindung über IPC herzustellen.

Warum nicht? Oder was ist sonst das Problem?

Antworten (1)

Zusammenfassung

F: Warum kann ich keine Verbindung per IPC herstellen? Warum nicht? Oder was ist sonst das Problem?

A: Aus Ihrer HTML-Antwortnachricht geht hervor, dass Ihr Code derzeit die Version von web3_extended verwendet, die das IPC-Protokoll nicht unterstützt.



Einzelheiten

Können Sie überprüfen, ob Sie tjade273/web3_extended und NICHT The18thWarrior/web3_extended verwenden ?

Die erste wurde von der zweiten abgezweigt und beinhaltet die Handhabung des IPC-Protokolls. Aus tjade273/web3_extended/blob/index.js - Zeilen 7 bis 15 :

function create(options) {
    if(options.ipc){
        var client = new net.Socket();
        web3.setProvider(new web3.providers.IpcProvider(options.host,client));
    }
    else{
        web3.setProvider(new web3.providers.HttpProvider(options.host));
    }
    if (options.personal) {

während der ursprüngliche Code von The18thWarrior/web3_extended/blob/index.js - Zeilen 6 bis 9 :

function create(options) {
    web3.setProvider(new web3.providers.HttpProvider(options.host));

    if (options.personal) {
Vielen Dank! Das sieht nach dem Grund aus. Abgesehen vom manuellen Herunterziehen von Dateien, gibt es eine Möglichkeit, npm/ubuntu einzurichten, um die richtige Version zu erhalten?
@spraff Sie können verwenden npm install web3_ipc, um meine zu installieren, im Gegensatz zu web3_extendedder anderen Version
Ich habe auch das gleiche Problem, aber ich habe nicht die richtige Lösung bekommen. Muss ich nur installieren web3_ipcund nicht web3_extended? Wie in diesem Fall bekomme ich Fehler cannot find node module web3_extended. Und wenn beide Knotenmodule web3_extendedund installiert werden web3_ipc, erhalte ich denselben Fehler wie Your browser sent a request that this server could not understand.Bitte helfen Sie!