2016-03-19 3 views
0

Hier ist ein Beispielcode, um es klarer zu machen.Sofort aufgerufener Funktionsausdruck wird nicht am zweiten Tag ausgeführt.

Das ist mein Modul:

module.exports = ((parameter) => { 
    console.log(parameter); 
})('some value'); 

mymodule tatsächlich die Hauptserver-Datei ist und somit sofort ausgeführt werden.

Meine Komponententests in Testsuite erfordern mein Modul, aber der sofort aufgerufene Funktionsausdruck wird nur beim ersten Mal ausgeführt.

require('./mymodule'); 
require('./mymodule'); 

Wie kann ich das jedes Mal machen?

Antwort

1

können Sie den Cache ungültig machen, die Knoten unterhält:

require('./mymodule'); 
delete require.cache[require.resolve('./mymodule')] 
require('./mymodule'); 

Sie wahrscheinlich besser dran, obwohl mit der Funktion exportieren und ruft bei Bedarf statt nur das Ergebnis zu exportieren.

1

Von NodeJS docs:

Mehrere Anrufe ('foo') zu verlangen, verursachen nicht das Codemodul ausgeführt mehrfach sein. Dies ist ein wichtiges Merkmal. Mit ihm können "tlw-done" -Objekte zurückgegeben werden, so dass transitive Abhängigkeiten auch dann geladen werden können, wenn sie Zyklen verursachen würden.

https://nodejs.org/docs/v0.4.12/api/modules.html#caching

Wenn Sie ein Modul-Code haben wollen mehrere Male ausführen, dann eine Funktion exportieren, und diese Funktion aufrufen.