例子:
当前脚本文件 /home/ry/projects/foo.js 执行了 require('bar') ,这属于上面的第三种情况。Node 内部运行过程如下。
首先,确定 x 的绝对路径可能是下面这些位置,依次搜索每一个目录。
/home/ry/projects/node_modules/bar
/home/ry/node_modules/bar
/home/node_modules/bar
/node_modules/bar
搜索时,Node 先将 bar 当成文件名,依次尝试加载下面这些文件,只要有一个成功就返回。
bar
bar.js
bar.json
bar.node
如果都不成功,说明 bar 可能是目录名,于是依次尝试加载下面这些文件
bar/package.json(main字段)
bar/index.js
bar/index.json
bar/index.node