Web3 Leeres Objekt Serverseite in Meteor

Neues --bareMeteor-Projekt erstellt (Version 1.8).

Wird verwendet meteor npm install --save web3, um web3 aus npmjs.org.

Im Code server.jsverwenden:

Web3 = require('web3')
console.log(Web3) // returns '{}'

Dem Meteor-Projekt wurde nichts anderes hinzugefügt. Die clientseitige Verwendung ist wie erwartet.

Toolkit: MacOS, Ganache, Trüffel, Web3 Version 1

Ich habe natürlich entdeckt, dass dies eine Folge der Rekursion in Paketabhängigkeiten sein kann

Ist das ein bekanntes Problem? Ist es ein Fehler? Was wäre die beste Richtung, um die Ursache dieses Problems zu ermitteln?

Verwandte SO-Fragen/Threads:

Meteor serverseitiger Vertragsereignis-Überwachungsfehler

Problem mit Aufruf der Meteor-Serverseite zum Ethereum-Knoten

Modul 'web3' Meteor kann nicht gefunden werden

Wie stellen Sie von der Serverseite einer Meteor-App eine Verbindung zu einem Knoten her?

Aktualisieren:

Nachdem ich viele ungelöste Fragen/Probleme dazu gesehen habe, habe ich ein bestehendes Github- Problem zur Nachverfolgung angestossen. Zusätzlich gibt es einen Beitrag im Meteor-Forum , und ich habe einen Beitrag im Ethereum-Forum erstellt

Es wurde auch versucht, nur die verteilte Bibliotheksdatei web3.jsvon github dist mit ähnlichen Ergebnissen zu verwenden.
Es ist offensichtlich besser, dafür NPM zu verwenden, aber es funktioniert nicht einmal, wenn Sie die distDatei einschließen und direkt darauf verweisen? Wie, require('./web3.dist.js');? Das ./stellt sicher, dass vorher eine direkte Dateisuche durchgeführt wird node_modules.
@ohsully ja, der direkte Verweis auf die dist-Datei ist, wie ich es getestet habe. Es funktioniert nur auf einem Knotenprojekt, und aus früheren Erfahrungen habe ich gesehen, wann die Paketabhängigkeitsrekursion zu diesem Effekt für ein anderes Projekt und npm-Paket geführt hat, mit dem ich gearbeitet habe. Daher gehe ich davon aus, dass es auf der Serverseite einen Konflikt mit Meteor gibt. Es ist auch interessant festzustellen, dass es sich um ein neues --bareProjekt in der neuesten Meteor-Version handelt.
Update: Habe sowohl aus der npm- als auch aus der dist-Datei parallel installiert und kann versuchen, beides auf dem Server zu importieren/anzufordern. Immer noch ein neues, leeres Meteor-Projekt, habe nur die dist-Datei heruntergeladen und ausgeführt meteor npm install --save web3. Dasselbe Problem besteht weiterhin.
Update zum Lösungsfortschritt: Ich konnte web3 sowohl auf dem Server als auch auf dem Client in Meteor (1.7/1.8) zum Laufen bringen. Dies wurde erreicht, indem zuerst meteor-node-stubsdas npm-Paket entfernt wurde. Dies hatte einen Abhängigkeitskonflikt mit web3 (Kandidatenpaket ist crypto-browserify). Nach dem erneuten Hinzufügen des meteor-node-stubsPakets nach der Installation von web3 im Projekt scheint der Konflikt behoben zu sein. Es scheint, dass die Ladereihenfolge der Abhängigkeiten das Problem gewesen sein könnte. Weitere Tests sind erforderlich, um genau die spezifische Lösung zu bestimmen. Vielleicht können andere diese 'Workaround'-Lösung testen?
Ich mache keine aktive Meteor-Entwicklung mehr, aber wenn Sie es zum Laufen gebracht haben, dann klingt es so, als sollten Sie das aufschreiben und Ihre eigene Antwort akzeptieren! Requisiten.

Antworten (1)

Bei weiteren Tests scheint es eine konsistente requireProblemumgehung zu geben, um das Web3-Paket auf dem Server in Meteor zum Laufen zu bringen.

Getestete Vorgehensweise bei neuen und bestehenden Meteor-Projekten (Version 1.7/1.8):

  1. Erstellen Sie ein neues Meteor-Projekt (optional) oder navigieren Sie zum Verzeichnis eines vorhandenen Projekts.
  2. Verwenden Sie im Meteor-Projektverzeichnis meteor npm uninstall --save meteor-node-stubs.
  3. Als nächstes tun:meteor npm install --save web3
  4. Jetzt neu hinzufügenmeteor npm install --save meteor-node-stubs
  5. Führen Sie den normalen Import durch und instanziieren Sie das Web 3-Objekt gemäß der Dokumentation

Die web3-Instanz sollte jetzt wie erwartet auf dem Meteor-Server funktionieren, was Sie nach dem Start der App mit überprüfen können meteor shell.

Es scheint, dass es ein Problem in der Ladereihenfolge von widersprüchlichen Abhängigkeitspaketen gibt, wobei das potenzielle störende Paket crypto-browserify.