这个node.js模块是如何加载的?

时间:2015-01-29 20:33:48

标签: node.js express npm

我刚开始学习节点并表达并偶然发现了这个示例快速应用程序 - https://github.com/madhums/node-express-mongoose-demo。 server.js文件加载名为config的模块而没有相对路径 -

var config = require('config')

https://github.com/madhums/node-express-mongoose-demo/blob/master/server.js#L15。 我不明白的是模块是如何加载的。 node_modules中没有名为config的模块。 package.json包含指向./config文件夹的NODE_PATH。但是,config文件夹不包含index.js文件。 那么config对象如何获取其属性呢?

1 个答案:

答案 0 :(得分:2)

NODE_PATH指向包含节点模块的超级文件夹(可能位于文件夹中,也可能是单个文件)。

The modules documentation说:

  

如果设置了NODE_PATH环境变量...那么如果在其他地方找不到模块,节点将搜索这些路径。

搜索那些路径以寻找模块;它不会将这些路径视为模块。

因此,require('config')加载./config/config.jsNODE_PATH=./config:...告诉Node在./config中查找模块,它会在该文件夹中找到一个名为config.js的文件,并将其作为模块加载。