我尝试处理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
请帮助..我已经好几个小时了:(
答案 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
目录中查找。这是故意的;目标是使每个包完全声明其依赖项,因此更容易将包从一个主机移动到另一个主机,而不必弄清楚需要在目标系统上安装哪些未记录的依赖项。