Node.js 在require第三方包时,查找的路径是什么样的。

480 阅读1分钟

node.js遵循CommomJS规范,即一个文件就是一个模块,里面的变量,函数,类都是私有的,也就是说是被封装好的。当我们执行const xxx = require('第三方包名')的时候,它的查找路径是什么样的呢?


第一步

require('第三方包名')将会先在当前项目的node_modules里查找这个包,并进行第二步。


第二步

require('第三方包名')将会在当前项目的node_modules里查找所有的package.json,并查找其中main属性对应的文件。即为这个第三方模块。

QQ截图20220621171419.png

若依然找不到,亦或者package.json中并没有main属性,则直接默认加载该包中的index.js

QQ截图20220621171752.png

若都找不到,则进行第三步。


第三步

再从上一级路径的node_modules里查找,重复上面的第二步的步骤。最终会找到 /(根目录),如果还找找不到,会报Error: Cannot find module '第三方包名'的错误。

QQ截图20220621172118.png