背景:
服務的入口文件有如下代碼:
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