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