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

How is this node.js module getting loaded?

我刚开始学习 node 和 express,偶然发现了这个示例 express 应用程序 - 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。但是,配置文件夹不包含 index.js 文件。 那么config对象是如何获取其属性的呢?

NODE_PATH 指向包含 Node 模块的超级文件夹(它们本身可能在文件夹中,或者可能是单个文件)。

The modules documentation 说:

If the NODE_PATH environment variable is set... then node will search those paths for modules if they are not found elsewhere.

在这些路径中搜索模块;它不会将这些路径 视为 模块。

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