饭后浅谈 node.js 中 require加载规则

190 阅读1分钟

require加载规则:

  • require 优先加载缓存中的模块。同一个模块第一次require之后,就会缓存一份,下一次require时就直接从缓存中去取。

  • 如果是加载核心模块,直接从内存中加载,并缓存

  • 加载核心模块的格式是 const xxx = require("模块名") 。不能写相对路径!

  • 如果是相对路径,则根据路径加载自定义模块,并缓存

  • require('./main')为例( 省略扩展名的情况) 先加载 main.js,如果没有再加载 main.json,如果没有再加载 main.node(c/c++编写的模块),找不到就报错。

  • 如果不是自定义模块,也不是核心模块,则加载第三方模块\

    require('XXX')为例:

  • node 会去本级 node_modules 目录下的xxx文件夹中找xxx.js ----> xxx.json ----> xxx.node(找到一个即返回),找到并缓存。
    如果找不到,node 则取上一级目录中的node_modules下找 , node_modules/xxx 目录,规则同上
    如果一直找到代码文件的文件系统的根目录还找不到,则报错:模块没有找到。

  • 在module.paths命令中可以看到搜索路径中包含node_modules这个文件夹