node.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > node.js > node 模块查找

nodejs中模块查找规则

作者:新节

本文介绍了Node.js模块的查找规则,主要包括核心模块、相对路径、绝对路径和第三方模块的解析方式,具有一定的参考参考价值,感兴趣的可以了解一下

当你在代码中使用import 或 require语句引入模块时,Node.js 会按照以下顺序查找模块:

一、基本查找规则

1,核心模块(内置):
如果模块名是Node.js核心模块(如fs、path、http等),则直接使用核心模块。

2,相对路径:
如果模块名以./或../开头,则将其视为相对路径,解析为相对于当前文件的路径。

3,绝对路径:
如果模块名以/开头,则将其视为绝对路径,解析为文件系统中的绝对路径。

4,第三方模块:

如果模块名不是以上三种情况,则将其视为一个包名,Node.js会在node_modules目录中查找该包(下面会介绍)

二、第三方模块的查找步骤

如果写入的路径不是以相对路径或者绝对路径开始的,直接写的element-plus:

import ElementPlus from 'element-plus'

此时,我们引入的是一个第三方模块时,Node.js会按照以下步骤查找模块:

1,逐级向上查找:

Node.js会从当前文件所在目录开始,逐级向上查找node_modules目录,直到找到匹配的包或到达文件系统的根目录。

2,读取package.json:

如果在任何一级目录中找到了node_modules目录,并且该目录包含所需的包,则Node.js会读取该包的package.json文件,以确定包的入口文件(通常是main字段指定的文件)。

如下图element-plus的入口文件:

main配置选项:

 "main": "lib/index.js",

可以看到, element-plus的入口文件是lib/index.js。当我们在页面中引入import ElementPlus from 'element-plus 时,它会首先进入lib/index.js 这里面;

那如果没有package.json文件或main字段为空呢?会默认使用index.js文件作为入口文件.

3, 默认入口文件:

如果没有package.json文件或main字段,Node.js会默认使用index.js文件作为入口文件。

上面这几部查找过程是递归的,会向上一级目录逐层查找,直到根目录,如果还没找到,则抛出错误:

Error: Cannot find module 'element-plus'  // [!code warning]

官方介绍https://nodejs.org/api/modules.html#loading-from-node_modules-folders

到此这篇关于nodejs中模块查找规则的文章就介绍到这了,更多相关node 模块查找内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文