nodejs 模块查找一起缓存机制

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模块,而不是之前那个的复用。也就是要注意他缓存是匹配全路径的。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值