这个 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 模块的超级文件夹(它们本身可能在文件夹中,或者可能是单个文件)。
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.js
。 NODE_PATH=./config:...
告诉 Node 在 ./config
中查找模块,它会在该文件夹中成功找到一个名为 config.js
的文件,并将其作为模块加载。
我刚开始学习 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 模块的超级文件夹(它们本身可能在文件夹中,或者可能是单个文件)。
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.js
。 NODE_PATH=./config:...
告诉 Node 在 ./config
中查找模块,它会在该文件夹中成功找到一个名为 config.js
的文件,并将其作为模块加载。