2017-03-31 3 views
0

TLDR: Ich möchte den Inhalt einer Datei einlesen und dann eine Funktion exportieren, die auf diesen Inhalt angewiesen ist ... ohne dass diese exportierte Funktion Versprechungen oder irgendeine andere Form von Asynchronität verwendet.Ist es in Node möglich, eine Datei einzulesen und deren Inhalt zu exportieren (ohne asynchron zu exportieren)?

Ich versuche ein XML-Validierungsmodul zu schreiben, und damit es seine Sache erledigen kann, muss ich eine XSD-Datei einlesen. Dies muss jedoch nur einmal zur "Ladezeit" geschehen, daher möchte ich idealerweise lieber nicht, dass andere Module, die meine Funktion verwenden, auf ein Versprechen warten müssen, um ihre Ergebnisse zu erhalten. Wenn ich Webpack verwenden würde, wäre dies einfach, da ich den XSL-Dateilader verwenden könnte, um das XSD wie jedes andere Modul zu verwenden ... aber leider nicht.

Mit anderen Worten, zur Zeit habe ich zu tun (Borderline-Pseudo-Code):

module.exports.validate =() => 
    new Promise((resolve) => 
     fs.readFile(path, (file) => { 
      // use file to validate, then: 
      resolve(validationResult); 
     }); 
    }); 

};

und stattdessen würde ich tun:

fs.readFile(path, (file) => { 
    module.exports.validate = myValidationFunction; 
}); 

Aber die oben nicht funktioniert, weil Sie nicht aus Rückrufe exportieren können, so meine Frage ist, gibt es eine andere Möglichkeit, dies zu erreichen?

Die https://github.com/jonschlinkert/to-exports Bibliothek scheint genau dies zu bieten, so scheint es, wie es möglich ist, ... aber es funktioniert nicht für mich :(

PS Im schlimmsten Fall könnte ich buchstäblich den Inhalt der Datei in der wickeln Vorlage Zeichenfolge Zeichen, benennen Sie die Datei .js zu sein, und exportieren es auf diese Weise:

module.exports = `*XSD contents go here*`; 

jedoch die sehr kludgy scheint, so hoffe ich, gibt es eine bessere Art und Weise

Antwort

1

Wenn Sie wollen. Lesen Sie eine Datei synchron Verwenden Sie dann fs.readFileSync. Es gibt den Inhalt der Datei zurück oder gibt einen Fehler aus.

+0

Die traurige Sache ist, ich wusste sogar, dass diese Funktionen existierten, aber ich hatte sie vergessen ... manchmal die offensichtliche Antwort starrt Sie direkt ins Gesicht und Sie brauchen ein wenig SO, um es zu sehen. Vielen Dank! – machineghost

+0

Gern geschehen! –

Verwandte Themen