nodejs中模块查找规则

 更新时间:2026年01月16日 08:48:05   作者:新节  
本文介绍了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 模块查找内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • NodeJs form-data格式传输文件的方法

    NodeJs form-data格式传输文件的方法

    这篇文章主要介绍了NodeJs form-data格式传输文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Node.js中fs模块实现配置文件的读写操作

    Node.js中fs模块实现配置文件的读写操作

    在Node.js中, fs模块提供了对文件系统的访问功能,我们可以利用它来实现配置文件的读取和写入操作,这篇文章主要介绍了Node.js中fs模块实现配置文件的读写,需要的朋友可以参考下
    2024-04-04
  • 使用nodeAPI时遇到过异步问题解决

    使用nodeAPI时遇到过异步问题解决

    这篇文章主要为大家介绍了使用nodeAPI时遇到过异步问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 吐槽一下我所了解的Node.js

    吐槽一下我所了解的Node.js

    用了一年多 Node.js, 现在已经是 Node.js 的脑残粉了,这篇日志比较杂,算是我对 Node.js 方方面面的一个集中吐槽。
    2014-10-10
  • Nodejs Sequelize手册学习快速入门到应用

    Nodejs Sequelize手册学习快速入门到应用

    这篇文章主要为大家介绍了Nodejs Sequelize手册学习快速入门到应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Kubernetes Node删除镜像的实现步骤

    Kubernetes Node删除镜像的实现步骤

    本文介绍了在Kubernetes集群中如何删除节点上的镜像,包括连接节点、查看镜像列表、使用Docker命令删除镜像以及验证删除结果的步骤,感兴趣的可以了解一下
    2024-09-09
  • node网页分段渲染详解

    node网页分段渲染详解

    按照常理,我们渲染一张网页,必定是网页全部拼装完毕,然后生成HTML字符串,传送至客户端。这也意味着,如果一张网页处理的有快有慢的话,必须串行等到所有的逻辑都处理完毕。后端才能进行返回。
    2016-09-09
  • Node.js基础入门之模块与npm包管理器使用详解

    Node.js基础入门之模块与npm包管理器使用详解

    Node.js是一个基于Chrome V8引擎的JavaScript运行时。类似于Java中的JRE,.Net中的CLR。本文将详细为大家介绍Node.js中的模块与npm包管理器的使用,需要的可以参考一下
    2022-03-03
  • nodejs+mysql实现用户相关的增删改查的详细操作

    nodejs+mysql实现用户相关的增删改查的详细操作

    这篇文章主要介绍了nodejs+mysql实现用户相关的增删改查的详细操作的相关资料,需要的朋友可以参考下
    2023-05-05
  • Puppet的一些技巧

    Puppet的一些技巧

    puppet这个工具真的很神奇,先不说商业版有哪些黑科技,单是开源版本就有很多可能让你摸不着头脑的地方,下面来列举一下puppet是怎么查找puppet server的
    2018-09-09

最新评论