node.js相当于python的if __name__ =='__ main__'

时间:2011-02-13 01:40:01

标签: node.js

我想检查我的模块是否被包含或直接运行。我怎么能在node.js中做到这一点?

2 个答案:

答案 0 :(得分:337)

The docs描述了另一种方法,这可能是首选方法:

  

直接从Node运行文件时,require.main设置为其模块。

要利用此功能,请检查此模块是否为主模块,如果是,请调用主代码:

var fnName = function(){
    // main code
}

if (require.main === module) {
    fnName();
}

编辑:如果您在浏览器中使用此代码,则会出现“参考错误”,因为未定义“require”。为防止这种情况,请使用:

if (typeof require != 'undefined' && require.main==module) {
    fnName();
}

答案 1 :(得分:59)

if (!module.parent) {
  // this is the main module
} else {
  // we were require()d from somewhere else
}

编辑:如果您在浏览器中使用此代码,则会出现“参考错误”,因为未定义“模块”。为防止这种情况,请使用:

if (typeof module != 'undefined' && !module.parent) {
  // this is the main module
} else {
  // we were require()d from somewhere else or from a browser
}