require一般只加载两种东西:
- 文件:require参数字符串中以 './' 或 '/' 开头,比如
require('./students.js'); - 模块:require参数字符串没有 '/',比如
require('fs');
下面就这两种情况分别阐述。
一、 require 加载文件
我做了一个算法流程图,更加直观。

require加载文件规则.png
简单总结一下规则:
- 先加载文件,优先级为:.js > .json >.node
- 没有文件加载文件夹:
- 先看有没有
package.json,有的话,加载package.json里main属性指定的文件。 - 没有
package.json,加载该目录下的index.js文件
- 先看有没有
这是我目前遇到过的所有情况,如果还有其他遗漏,欢迎小伙伴们在评论里补充。
require 加载模块

require加载模块.png