npm全局安装路径完全搞砸了

时间:2014-12-28 13:30:44

标签: node.js terminal npm

我尝试处理Node.js权限问题以安装新模块,并且在此过程中它完全搞砸了所以当我在全球安装某些东西时,它只是没有终端功能。 例如,默认路径曾经是/ usr / local / lib / node_modules,但是现在每当我用npm -g安装一些东西时,它都会将它安装在我的OSX主文件夹(!!)中,并且它无法全局访问。 我尝试删除所有内容,重新安装Node.js,没有任何帮助。 这一切都发生在this thread

之后

使用这些行:

sudo chown -R $(whoami) ~/.npm
sudo chown -R `whoami` /usr/local/lib/node_modules

请帮助..我已经好几个小时了:(

2 个答案:

答案 0 :(得分:0)

您是否验证了npm的配置?

运行以下命令

npm config ls -l

检查npm的配置(有和没有sudo)。

您可以尝试卸载Node.js,删除npm配置文件(npmrc)(如果有)或任何其他npm文件夹,然后重新安装。

将系统文件夹的权限更改为 / usr / local / lib / node_modules 是一个坏主意。

答案 1 :(得分:0)

听起来有几个问题。

  

现在每当我用npm -g安装东西时,它都会将它安装在我的OSX主文件夹(!!)中,并且无法全局访问。

npm在主目录中的〜/ .npm中维护一个缓存。这不是安装位置,只是下载的包和其他数据的缓存。如果这导致你的悲伤,你可以暂时用

摆脱它

npm cache clean

npm将在缓存运行时重新创建并重新填充缓存。

解决这种情况的一种方法是下载并运行此脚本< https://github.com/DomT4/scripts/blob/master/OSX_Node_Removal/terminatenode.sh>这将完全删除节点。然后,您可以使用安装程序< http://nodejs.org/download/>或者自制软件,无论你喜欢哪种。

最后一点是,当您在全局安装软件包时,不能require:您将获得新命令。例如:

$ jshint -bash: jshint: command not found $ npm install -g jshint $ jshint $

现在我安装了jshint命令,可以用它来分析源文件;但是我不能require('jshint')来自任何代码,因为它不会在全局node_modules目录中查找。这是故意的;目标是使每个包完全声明其依赖项,因此更容易将包从一个主机移动到另一个主机,而不必弄清楚需要在目标系统上安装哪些未记录的依赖项。