node自定义模块的路径查找

Posted hyhy904

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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自定义模块的路径查找的主要内容,如果未能解决你的问题,请参考以下文章

Python中如何添加自定义模块

自定义模块

node--CommonJS

Node自定义模块

为啥在Python中我自定义的模块路径无效呢?

为所需的 dll 文件设置自定义路径:电子应用程序