lgwebdream / FE-Interview

🔥🔥🔥 前端面试,独有前端面试题详解,前端面试刷题必备,1000+前端面试真题,Html、Css、JavaScript、Vue、React、Node、TypeScript、Webpack、算法、网络与安全、浏览器
https://lgwebdream.github.io/FE-Interview/
Other
6.89k stars 895 forks source link

Day373:说下 Node 中 require 模块引入的查找方式? #1207

Open Genzhen opened 3 years ago

Genzhen commented 3 years ago

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 欢迎大家在下方发表自己的优质见解

二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。


Require 内部逻辑(摘自官方文档)

当 Node 遇到 require(X) 时,按照下面的顺序处理。

1)如果 X 是内置模块(比如 require('http')

2)如果 X 以./ 或者 ../开头

+----------------------+
|  .x                  |
|  .x.js               |
|  .x.json             |
|  .x.node             |
+--------------------  +
+----------------------------+
| .X/package.json(main 字段) |
| .X/index.js |
| .X/index.json |
| .X/index.node |
+--------------------------- +

3)如果 X 不带路径

a.根据 X 所在的父模块,确定 X 可能的安装目录。 b.依次在每个目录中, 将 X 当成文件名或目录名加载

4)抛出 "not found"