2017-06-11 1 views
0

Ich habe 2 Dateiennode.js wissen die Datei, wo das passiert erfordern

// file1.js 
//some js code that will do what I ask in the question 
module.exports = myFunc 

//file2.js 
require('./file1') 

Ist es möglich, in jeder Art und Weise, für file1.js zu wissen, wer es erforderlich? Wenn Datei2 also Datei1 benötigt, weiß Datei1, dass es Datei2 ist?

+0

Warum würden Sie das tun? Was ist, wenn zwei Module beides erfordern? –

+0

mein js-fu ist schwach, aber ich möchte für file1 eine Datei mit dem Namen erstellen, die file2 enthält –

+0

Wenn Sie dies zum Debuggen möchten, schauen Sie sich 'new Error() .stack' an. Wenn Sie dies für die Logik wollen, fügen Sie keine Abstraktionsschicht hinzu, damit Sie sie von vornherein anders aufrufen können. –

Antwort

2

Sie haben notiert, dass Sie die Funktionalität file1 verwenden möchten, um eine Datei zu erstellen, die denselben Namen wie die Anrufer hat. Sie können dies tun, indem Sie die Variable __filename innerhalb eines Moduls verwenden.

Anstatt zu versuchen, auf den Aufrufer zuzugreifen, übergeben Sie einfach diese Variable, wenn Sie file1 verwenden. Zum Beispiel:

require('./file1')(__filename) 

Wo file1 hat so etwas wie:

module.exports = filename => { 
    // create file here 
} 

Während dies Ihr Problem lösen soll, ist es wie eine seltsame Anforderung scheint, und es ist wahrscheinlich, ein besserer Weg zu erreichen, was Sie wirklich sind nach.