我刚开始学习节点并表达并偶然发现了这个示例快速应用程序 - 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对象如何获取其属性呢?
答案 0 :(得分:2)
NODE_PATH指向包含节点模块的超级文件夹(可能位于文件夹中,也可能是单个文件)。
如果设置了
NODE_PATH
环境变量...那么如果在其他地方找不到模块,节点将搜索这些路径。
搜索那些路径以寻找模块;它不会将这些路径视为模块。
因此,require('config')
加载./config/config.js
。 NODE_PATH=./config:...
告诉Node在./config
中查找模块,它会在该文件夹中找到一个名为config.js
的文件,并将其作为模块加载。