nodejs 模块查找一起缓存机制

来源:互联网 发布:jira 数据库配置文件 编辑:程序博客网 时间:2024/04/29 03:55

nodejs在加载外部自定义模块时对模块有查找顺序,找到后还会进行缓存。


查找顺序:

1. 相对路径,比如提供./ 或者../这种以'./'和‘..’开始的路径,简单的,就是相对当前位置的路径。

2.绝对路径,这时候将按以下顺序查找:

假设执行路径为C:\Intel\research\subFolder

那么查找顺序为

[ 'C:\\Intel\\research\\subFolder\\node_modules',
  'C:\\Intel\\research\\node_modules',
  'C:\\Intel\\node_modules',
  'C:\\node_modules' ]

然后是['.']

然后是:

windows下%NODE_PATH%,%USERPROFILE%/.node_modules, %USERPROFILE%/.node_libraries 

非windows下$NODE_PATH, $HOME/.node_modules, $HOME/.node_libraries 

然后是node.exe目录的../../lib/node,所以这个具体取决于node二进制文件放哪里.


一旦加载成功就以模块的路径进行缓存,这里有一个陷阱。

就是如果父目录包含X模块,且存在引用X模块的代码。而子目录也是相同的情况。那么父目录和子目录下实际引用到的分别是自己目录下的那个X模块,而不是之前那个的复用。也就是要注意他缓存是匹配全路径的。






0 0
原创粉丝点击