【问题标题】:npm global install path got totally screwed upnpm 全局安装路径完全搞砸了
【发布时间】:2014-12-28 13:30:44
【问题描述】:

我尝试处理安装新模块的 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

请帮忙..我已经做了几个小时了:(

【问题讨论】:

    标签: node.js terminal npm


    【解决方案1】:

    你验证npm的配置了吗?

    运行以下命令

    npm config ls -l
    

    检查 npm 的配置(带和不带 sudo)。

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

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

    【讨论】:

      【解决方案2】:

      听起来有几个问题。

      现在每当我使用 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/ > 或 homebrew 进行安装,无论您喜欢哪个。

      不过,最后一点是,当你全局安装一个包时,你不能require 它:你会得到新的命令。例如:

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

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

      【讨论】:

        猜你喜欢
        • 2013-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多