美文网首页饥人谷技术博客
node_modules 的查找路径是怎样的?

node_modules 的查找路径是怎样的?

作者: 晓风残月1994 | 来源:发表于2017-11-06 16:31 被阅读1857次

首先项目运行时,遇见代码中的 require('xxxx') 请求模块时,会先在当前目录下寻找 node_modules 文件夹,然后在其中如果找到某个模块,则读取其 package.json 文件,找到 入口模块 main 字段,执行相应的 js 程序,如果当前目录没有找到 node_modules 文件夹,则继续往上一层寻找,一层层抽丝拨茧,直到世界的尽头(当前项目路径的根目录),如果还没找到,就报错啦(提示找不到)~
windows下的目录可能长这样:

C:\Users\晓风\Desktop\JavaScript Learning\npm学习\demo

所以最先会在demo目录下尝试寻找 node_modules

为什么有时候,你明明 使用 npm install -g xxx 安装了 xxx 模块,也在项目中引用了,为什么还是提示找不到呢?

这是因为全局安装模式会装在一个其他的路径中,
比如在我的 windows 中长这样:

C:\Users\晓风\AppData\Roaming\npm\node_modules

第一个项目路径中,一层层回溯,逆流而上,可偏偏找不到,

如果可以倒退,那么到了 '晓风' 这一层目录时,可以选择进入 AppData 向前查找,是可以找到 node_modules 文件夹的,但是 node 说:对不起,我只会一直找到底,没有就拉倒,不会走两步再退一步的寻找,所以 从你的全世界路过~~~

这就是关于全局安装时很重要的一点,一般选择全局安装的package,多是一些命令行工具,很多时候,我们希望这些工具可以运行在 anywhere,不用切换目录,也不用为了寻找到可执行文件去手动指定超长的路径,只需要输入简单的命令,就可以完成。
这其实是全局安装时,npm 帮你把可执行的文件路径配置到了系统的环境变量中,让你可以任何地方使用。

相关文章

网友评论

    本文标题:node_modules 的查找路径是怎样的?

    本文链接:https://www.haomeiwen.com/subject/ldblmxtx.html