關於"!module.parent"的用法

背景:

服務的入口文件有如下代碼:
if (!module.parent){
correlator.withId(‘Worker’, startWorker);
}
其他均爲內部方法。通過調查,才明白。這段代碼基本相當於直接執行correlator.withId('Worker', startWorker);(相當於入口函數)。但是在跑單元測試時,會把該入口文件作爲子模塊引入到*.test.js文件中,則不會執行入口方法。

!module.parent用於在沒有require的情況下直接運行某段代碼,如果是被require的,則不執行。
eg:
a.js:

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

b.js

require('./a');

直接執行
node a.js
控制檯打印:

I'm parent

運行
node b.js
控制檯打印:

I'm child
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章