2017-07-17 15 views
2

は、私は文がrequire.mainがその モジュールに設定され、ファイルがNode.jsのから直接実行される のNode.jsは、Node.jsの文書でrequire.main ===モジュール

を語りました。つまり、ファイル require.main === moduleをテストしてファイルが直接実行されたかどうかを判断することができます。私はここに mainが何であるかを聞いてみたい

、私は、誰が助けることができ、ソースコードに感謝し、このmainの定義を見つけることができません!

答えて

6

requireは関数です。 .mainはその関数のプロパティであるため、require.mainを参照できます。あなたが参照しているドキュメントの一部は、あなたがこのようなコードを書くことができると述べている:

という上記のコードで
if (require.main === module) { 
    // this module was run directly from the command line as in node xxx.js 
} else { 
    // this module was not run directly from the command line and probably loaded by something else 
} 

moduleは、そのコードので、Node.jsのでロードされているすべてのモジュールに渡される変数であり、基本的もしrequire.mainが現在のモジュールであれば、現在のモジュールはコマンドラインからロードされたものであると言います。

このプロパティを設定するコードは、次のとおりです。https://github.com/nodejs/node/blob/master/lib/internal/module.js#L23

+0

答えていただきありがとうございますが、module.jsファイルのModule.prototype.requireに.mainプロパティが見つかりません。私はソースコードが.mainプロパティをどこで定義しているのか不思議です。 – phaneven

+0

@phaneven - そのプロパティを設定するコードは次のとおりです:https://github.com/nodejs/node/blob/master/lib/internal/module.js#L23 – jfriend00

関連する問題