2016-08-07 60 views
0

Ich habe versucht herauszufinden, was ich vermisse dieses Puzzle zwischen. Node.js und Meteor.js. Meteor ist auf Node.js gebaut, das weiß ich. Aber Meteor funktioniert mit Node.js nicht richtig. Entweder muss ich 20 weitere Schritte machen, um das gleiche Ergebnis zu erhalten, was ich nicht weiß. Oder es gibt einen ernsten Fehler zwischen den beiden. Standalone Node.js führt den folgenden Befehl einfach aus. Das Ausführen derselben Befehle auf Meteor verursacht Fehler oder nicht definierte Ergebnisse. Ich wünschte, ich hätte ein Warum, um das zu lösen, oder sie müssen das reparieren, damit es so funktioniert, wie es funktionieren sollte.node.js Probleme mit Meteor Dateisystem

examples #1 

var fs = require('fs'); 
fs.readFile('file.txt', 'utf8', function (err,data) { 
    if (err) { 
    return console.log(err); 
    } 
    console.log(data); 
}); 

example #2 

var jetpack = require('fs-jetpack'); 

var data = jetpack.read('file.txt'); 
console.log(data); 

example #3 

var fs = require ('fs'); 

var readMe = fs.readFileSync('file.txt', 'utf8'); 
console.log(readMe); 
+0

Meteor läuft mit Fiber, was die NodeJS-Aufrufe synchron macht. Meteor verwendet auch DDP.connect zum Server. Meteor ist die Ausgabe des DDP.connect-Aufrufs. Frühere Versionen von Meteor ( vijayst

+0

Was genau ist Ihre Frage? Welche Fehlermeldungen erhalten Sie? – chrisklaussner

+0

Wenn ich die Codes auf Meteror ausführen. Ich bekomme entweder: Fehler: ENOENT: keine solche Datei oder Verzeichnis, öffnen 'oder ich bekomme eine Datei undefiniert. Kann nichts mit beiden Ergebnissen tun. Sie können das Problem neu erstellen und das Problem sehen, das ich habe. Nicht viel Code involviert – eazover

Antwort

0

Sie sollten nicht versuchen, Dateien so zu laden, da Sie wissen nicht, was die Ordnerstruktur wie aussieht. Meteor erstellt Builds aus Ihrem Projektverzeichnis, sowohl im Entwicklungs- als auch im Produktionsmodus. Das bedeutet, dass, obwohl Sie eine file.txt in Ihrem Projektordner haben, es nicht an der gleichen Stelle im Build (oder es ist überhaupt nicht im Build enthalten) endet.

Ihr Code versucht beispielsweise, die Datei aus dem Entwicklungsbuild-Ordner .meteor/local/build/programs/server zu lesen. Dieser Ordner enthält jedoch file.txt nicht.

Lösung: Shop file.txt im private Ordner Ihres Projekts und verwenden Assets.getText es zu lesen. Wenn Sie die Funktionen von fs weiterhin zum Laden der Datei verwenden möchten, können Sie den absoluten Pfad mit Assets.absoluteFilePath abrufen.