63 votes

Puis-je savoir, dans node.js si mon script est exécuté directement ou être chargé par un autre script?

Je suis juste de commencer avec node.js et j'ai une certaine expérience avec Python. En Python, j'ai pu vérifier que l' __name__ variable a été définie pour l' "__main__", et si c'était, je voudrais savoir que mon script est exécuté directement. Dans ce cas, je pourrais exécuter le code de test ou d'utiliser le module directement dans d'autres façons.

Est-il rien de semblable dans node.js?

95voto

qiao Points 7444

Vous pouvez utiliser module.parent afin de déterminer si le script est chargé par un autre script.

par exemple

a.js:

if (!module.parent) {
    console.log("I'm parent");
} else {
    console.log("I'm child");
}

b.js:

require('./a')

exécutez node a.js sortie:

I'm parent

exécutez node.b.js sortie:

I'm child

43voto

David Braun Points 773

L'on a accepté la réponse est fine. Je suis en ajoutant ce l'un à partir de la documentation officielle de l'exhaustivité:

Accéder au module principal

Lorsqu'un fichier est exécuté directement à partir du Nœud, require.main est réglé module. Cela signifie que vous pouvez déterminer si un fichier a été géré directement par les tests

require.main === module

Pour un fichier foo.js, ce sera true si elle est exécutée par nœud foo.js, mais false si l'exécution en require('./foo').

Parce qu' module fournit un filename de la propriété (ce qui équivaut normalement à l' __filename), le point d'entrée de l'application en cours peut être obtenu par la vérification de l' require.main.filename.

10voto

Thorsten Lorenz Points 4419

Les deux options !module.parent et require.main === modulede travail. Si vous êtes intéressé par plus de détails, veuillez lire mon blog détaillée post sur ce sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X