node.js遵循CommomJS规范,即一个文件就是一个模块,里面的变量,函数,类都是私有的,也就是说是被封装好的。当我们执行const xxx = require('第三方包名')的时候,它的查找路径是什么样的呢?
第一步
require('第三方包名')将会先在当前项目的node_modules里查找这个包,并进行第二步。
第二步
require('第三方包名')将会在当前项目的node_modules里查找所有的package.json,并查找其中main属性对应的文件。即为这个第三方模块。
若依然找不到,亦或者package.json中并没有main属性,则直接默认加载该包中的index.js。
若都找不到,则进行第三步。
第三步
再从上一级路径的node_modules里查找,重复上面的第二步的步骤。最终会找到 /(根目录),如果还找找不到,会报Error: Cannot find module '第三方包名'的错误。