node 的路径分析和文件查找策略

注意本篇文章的内容可以在《深入浅出 nodejs》这一本书中的 2.2 章节中找到详细介绍,这里只说结论

首先必须明确几点

  1. node 中使用的 commonjs 规范
  2. commonjs 规范使用 require 导入模块
    1. 模块就是文件,每一个文件都是一个模块

所以 node 中路径分析主要是针对 require 方法的,当然还有其他的比如说配置文件(package.json)中

查找顺序如下

  1. 优先从缓存加载
  2. 模块标识符分析
    1. 判断是否是原生(核心)模块(fs,http 等)
    2. 判断是否是路径形式的文件模块
      1. 如果是绝对路径,就从根目录找
      2. 如果是相对路径就从当前 require 文件相对位置查找
    3. 判断是否是自定义模块(也就是各种 npm 包)
      1. 在模块路径中依次查找
      2. 模块路径是各个层级 node_modules 组成的数组
  3. 文件扩展名分析
    1. 如果文件没有后缀,node 会按照 js,json,node 的次序补充扩展名,依次尝试
  4. 目录分析
    1. 目录作为模块,默认根据目录下 package.json 文件的 main 来指定目录模块
    2. 如果目录下没有 package.json 或着没有 main 属性,就会依此试图加载 .js、json、node 文件【文件扩展名分析】
相关推荐
Canace2 分钟前
最新版 Codex 工作流的问题
前端·人工智能·agent
变与不变8065 分钟前
引用类型、内存原理与对象
开发语言·前端·javascript
jearry6 分钟前
给 C++ 老程序补现代 UI:WebView2 多入口资源加载与虚拟主机名实践
前端
打呵欠的猫9 分钟前
让 AI 帮你写 Git Commit Message:从"fix bug"到语义化提交只需一个 Hook
前端·ai编程
labixiong10 分钟前
CSS 锚点定位实测:零 JS 实现气泡跟随,自动翻转很香但暗藏 3 个致命坑
前端·css
qibmz11 分钟前
用 DeepSeek 给 GitHub 仓库加 PR 自动 Review
前端
计算机魔术师11 分钟前
幻觉率从 4.2% 降到 2% 又退回,GPT-6 Astra 到底在藏什么
前端
梨想橙汁12 分钟前
Git 常用命令大全:提交、查看日志、版本回退、文件撤销
前端·javascript
Amos_Web18 分钟前
Rspack 源码解析(三):从入口到依赖图,读懂 Make 阶段的 Rust 任务循环
前端·rust
晴天1620 分钟前
浏览器中ESM与AMD模块共存的解决方案
前端·node.js