nodejs(三)加载第三方包的规则

2,184 阅读1分钟

在nodejs中,我们使用 require关键字来加载第三方包

那么,加载第三方包的规则是怎么样的呢,最终我们加载的是哪一个文件呢?

带着疑问,我们继续下面的探索

const art-template = require('art-template')

当我们使用如下代码引入一个第三方包的时候,

  • 优先在当前同级目录下面查找 node_modules文件夹
    • 找到node_modules文件夹之后,在该文件夹下面查找 art-template文件夹,找到art-template文件夹中的package.json文件,在package.json中有一个main属性,该属性指向一个文件目录,即为我们要加载的第三方模块的入口文件
    • 如果没有找到package.json文件或者没有找到 main入口文件,则会默认加载 art-template文件夹下的index.js文件,将其作为入口文件加载
  • 如果同级目录下面没有找到 node_modules文件夹,则会向上一级父亲级目录下查找 node_modules文件夹,执行与上面相同的查找逻辑
  • 如果没有找到,会重复向上一层文件夹执行同样的查找逻辑
  • 如果到磁盘根目录还没有找到,则报错
    • Error: Can't find module '***'