在不同位置安装Node.js全局模块的npm命令

3

我是在Unix操作系统Ubuntu上,遇到了安装全局模块的问题。

当我尝试查找node_modules目录时,发现npm将我的一些全局模块安装在了以下位置:

/usr/lib/node_modules

其中一些已安装在设备中。

/usr/local/lib/node_modules

我之前一直在使用这个全局模块没有问题,直到我尝试安装一个生成器后,我才开始查看目录,因为在安装生成器后,它会提示我没有安装该生成器。

奇怪的是,当我尝试一些模块时,它们完美地工作,但其中一些模块却说未安装。

有没有办法卸载/清除我的计算机上的nodejs以及它的模块,并重新安装,使其只使用单个目录,这样就不会出现混淆了呢?

您认为npm为什么会将这些东西安装在两个不同的目录中呢?


1
可能是Where does npm install packages?的重复问题。 - Liam
1个回答

3

我看你可能安装了两个不同版本的nodejs。可能一个是已打包的版本,另一个是新版本?

这能够工作是因为你的node文件夹可能设置为 /usr/local/lib/node_modules。 当Node查找模块时,它总是遍历文件夹树。因此,如果你执行 require('imNotHere') ,它会在以下位置查找:

/usr/local/lib/node_modules/imNotHere
/usr/local/node_modules/imNotHere
/usr/node_modules/imNotHere
/node_modules/imNotHere

在失败之前,在您的设置模块中,/usr/lib/node_modules中的模块仍将被捕获。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接