node自定义模块的路径查找
自定义模块指的是非核心模块,也不是路径形式的标识符。它是一种特殊的文件模块,可能是一个文件或者包的形式。这类模块的查找是最费时的,也是所有方式中最慢的一种。
模块路径是Node在定位文件模块的具体文件时制定的查找策略,具体表现为一个路径组成的数组。关于这个路径的生成规则,我们可以手动尝试一番。
创建test.js文件,其内容为 console.log(module.paths); 。
将其放到任意一个目录中然后执行 node test.js 。
在Linux下,你可能得到的是这样一个数组输出:
[ '/home/jackson/research/node_modules',
'/home/jackson/node_modules',
'/home/node_modules',
'/node_modules' ]
1
2
3
4
而在Windows下,也许是这样:
[ 'c:\\nodejs\\node_modules', 'c:\\node_modules' ]
1
可以看出,模块路径的生成规则如下所示。
前文件目录下的node_modules目录。
父目录下的node_modules目录。
父目录的父目录下的node_modules目录。
沿路径向上逐级递归,直到根目录下的node_modules目录。
它的生成方式与JavaScript的原型链或作用域链的查找方式十分类似。在加载的过程中,Node会逐个尝试模块路径中的路径,直到找到目标文件为止。可以看出,当前文件的路径越深,模块查找耗时会越多,这是自定义模块的加载速度是最慢的原因。
webpack可以配置模块的查找路径
resolve: {
modules: [path.resolve(__dirname, 'node_modules')]
}
1
2
3
指定只在当前模块的node_modules查找模块
---------------------
相关文章
- [Node.js] VS2019 开发环境搭建 + Hello World 实例
- node config
- Vue - Syntax Error: Error: Node Sass version 6.0.0 is incompatible with ^4.0.0.
- 柏林纪行(中):Node.js Collaboration Summit
- Node.js 命令行程序开发教程
- Node.js http Server
- Node.js(五)—— 内置模块之net模块和http模块
- Node 三大模块【详细】
- 一个兼容 node 与浏览器的模块写法
- CentOS 6.6 安装 Node.js
- Node.js文件系统、路径的操作函数
- Node fs模块异步读取验证并异步写入
- Node buffer模块缓冲区
- 《Node.js入门经典》一2.5 如何找模块
- 搞node爬虫--puppeteer--记一次大坑
- node中的stream(流)内置模块
- 浅析vue-cli如何配置NODE_ENV等各种环境变量及NODE_ENV设置为test、development以及其他值时会出现什么情况
- centos7安装k8s 1.25版本 Error getting node“ err=“node “master01“ not found 需要指定 --pod-infra-container-image= 参数
- node的模块管理
- node 中 npm报错 Error: ENOENT, stat 'C:UsersAdministratorAppDataRoamingnpm'
- Populating Next Right Pointers in Each Node II
- Node.js npm uuid
- Node.js UDP / Datagram Sockets模块
- Node.js V8模块