node_path和require

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node_path和require相关的知识,希望对你有一定的参考价值。

参考技术A

其实, NODE_PATH 就是一个环境变量啦,只不过, Node 在加载模块的时候会去读取这个环境变量:

node 模块加载主要是依靠于 require , require 做的工作就是去加载我们需要的模块:

如图所示,一共定义了三个文件

文件内容分别如下:

package.json

index.js

app/test.js

打开终端执行 npm run start

前面我们讲过,NODE_PATH其实是一个环境变量,这个环境变量是我们可以指定的,如果直接按照上面的去做,系统中的环境变量其实是会被替换掉的。

比如这个时候,我增加了一个新的目录 dd/haha.js ,我可以把它添加到 NODE_PATH中 ,

package.json

这个时候我在其他地方就可以使用 require(\'haha\') 去引用 dd/haha.js 文件了。

这里加上了 $NODE_PATH 是为了不覆盖环境变量中的 NODE_PATH 。

当然是以第一个找到的为准啦。

windows环境下无法引用全局安装的模块问题

问题

在node项目中,往往需要安装一些依赖的包,通常我们采取全局安装的方式,来减少一些包重复安装带来的烦恼。

但是全局安装后出现无法使用的情况,可能是你NODE_PATH没有设置或者不正确造成的。

解决方案

那么,什么是NODE_PATH呢?

NODE_PATH是node为模块提供寻找路径的一个环境变量。关于node模块加载策略,可以参考这里

那么,如何配置NODE_PATH呢?

很简单,只需要在环境变量中新添加一个名为NODE_PATH的变量,值为npm的安装目录,例如:

C:\Users\XX\AppData\Roaming\npm\node_modules

以上是关于node_path和require的主要内容,如果未能解决你的问题,请参考以下文章

eslint 并使用 NODE_PATH 环境变量导入模块

在 vscode 调试器中使用 NODE_PATH

React Material 启动脚本 NODE_PATH 无法识别

st_network_paths 仅生成带有单个节点的 node_path

如何启动节点服务器并导出 NODE_PATH(使用 npm start 或内联命令)

Node.js - 使用 NVM 配置 $NODE_PATH