node 中第三方模块的加载过程原理
node 中第三方模块的加载过程原理
凡是第三方模块都必须通过 npm 来下载
- 使用的时候就可以通过
require('包名')的方式来进行加载才可以使用 - 不可能有任何一个第三方包和核心模块的名字是一样的
- 既不是核心模块、也不是路径形式的模块
加载过程如下:
- 先找到当前文件所处目录中的
node_modules目录 - 然后是
node_modules/包名 - 然后是
node_modules/包名/packagejson文件 - 然后找
node_modules/包名/package.json文件中的main属性 main属性中就记录了包的入口模块- 然后加载使用这个第三方包
- 实际上最終加载的还是文件
- 如果
package.json文件不存在或者main指定的入口模块是也没有则node会自动找该目录下的index.js(也就是说index.js会作为一个默认备选明)
如果以上所有任何一个条件都不成立,则会进入上一级目录中node_modules 目录查找。如果上一级还没有,则继续往上上一级查找
如果直到当前磁盘根目条还找不到, 最后报错;
can not find module xxx

浙公网安备 33010602011771号