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 文件【文件扩展名分析】
相关推荐
回眸&啤酒鸭23 分钟前
DeepSeek V4.1 Flash 批量处理实战指南
服务器·前端·javascript
用户33740969242624 分钟前
2026-09-27-Qwen-Image-2.1-1660Ti本地部署实战
前端
BIM云平台开发26 分钟前
DAZ里,如何保存现在姿势,如果调错了,可以重新导回
linux·服务器·前端·daz基础教程
传人27 分钟前
网页文字滚动效果如何做
前端·javascript·jquery
福兮说30 分钟前
前后端算的 MD5、SHA-256 对不上?编码、换行、BOM、HMAC、JSON 顺序,八个原因逐个实测
前端·javascript·node.js·json·哈希算法
一木 之林31 分钟前
DeepSeek Agent 开发
java·前端·人工智能
王霸天1 小时前
Three.js 模型体积优化:Draco/Meshopt 压缩与 DRACOLoader 配置的 4 个步骤
java·前端·javascript
AAA程序技术1 小时前
用户点击按钮时,发生了什么
前端
花旗蜕变1 小时前
前端转 NestJS 全栈实践:从表单页面到微信业务系统
前端·typescript·nestjs
开开心心就好1 小时前
二维码批量生成导出工具,离线可用完全免费
java·前端·人工智能·智能手机·github·excel·visual studio