从 node_modules
文件夹加载模块
如果传递给 require()
的模块标识符不是核心模块,也没有以 '/'
、 '../'
或 './'
开头,那么 Node.js 会从当前模块的父目录开始,尝试在它的 /node_modules
文件夹里加载相应模块。Node.js 不会添加 node_modules
到已经以 node_modules
结尾的路径上。
如果没有找到,那么就再向上一级目录移动,直到文件系统的根目录为止。
例如,假设在 '/home/ry/projects/foo.js'
文件里调用了 require('bar.js')
,那么 Node.js 查找其位置的顺序依次为:
/home/ry/projects/node_modules/bar.js
/home/ry/node_modules/bar.js
/home/node_modules/bar.js
/node_modules/bar.js
这允许程序本地化它们的依赖,避免它们产生冲突。
通过在模块名称后包含路径后缀,你可以请求特定的文件或分布式的子模块。例如,require('example-module/path/to/file')
将被解析为相对于 example-module
所在位置的 path/to/file
。后缀路径同样遵循模块路径的解析规则。