【问题标题】:How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)如何完全卸载 Node.js,然后从头重新安装(Mac OS X)
【发布时间】:2012-06-26 00:52:53
【问题描述】:

即使我安装了 brew node 和 NVM install v0.6.19,我的 node 版本始终是 v0.6.1-pre。

我的节点版本是:

node -v
v0.6.1-pre

NVM 这么说(在我第一次在一个 bash 终端中安装一个版本的节点之后):

nvm ls
v0.6.19
current:    v0.6.19

但是当我重新启动 bash 时,我看到的是这样的:

nvm ls
v0.6.19
current:    v0.6.1-pre
default -> 0.6.19 (-> v0.6.19)

那么这个幻像节点 0.6.1-pre 版本在哪里,我该如何摆脱它?我正在尝试通过 NPM 安装库,以便我可以处理项目。

我尝试在 NVM 之前使用 BREW 进行更新,使用 brew updatebrew install node。 我尝试删除/usr/local/include 中的“node”目录以及/usr/local/lib 中的“node”和“node_modules”。 我已经尝试卸载 npm 并按照these 的说明重新安装。

所有这一切都是因为我试图更新旧版本的节点来安装“zipstream”库。现在我的用户目录中有文件夹,并且节点版本仍然不是最新的,即使 NVM 说它使用的是 0.6.19。

理想情况下,我想卸载 nodejs、npm 和 nvm,然后在我的系统上从头开始重新安装整个东西。

【问题讨论】:

标签: javascript node.js npm


【解决方案1】:

显然,有一个/Users/myusername/local 文件夹包含一个includenodelib 以及nodenode_modules。我不知道它是如何以及为什么创建而不是在我的 /usr/local 文件夹中创建的。

删除这些本地引用修复了幻影 v0.6.1-pre。如果有人有解释,我会选择它作为正确答案。

编辑:

您可能还需要执行其他说明:

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}

相当于(同上)...

sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* /usr/local/lib/dtrace/node.d ~/.npm ~/.node-gyp 

或(同上)分解...

完全卸载node+npm的方法如下:

  1. 转到 /usr/local/lib 并删除所有 nodenode_modules
  2. 进入/usr/local/include并删除所有nodenode_modules目录
  3. 如果您使用 brew install node 安装,则在终端中运行 brew uninstall node
  4. 检查您的主目录中是否有任何 locallibinclude 文件夹,并删除任何 node 或 node_modules 从那里开始
  5. 转到 /usr/local/bin 并删除所有 node 可执行文件

您可能还需要这样做:

sudo rm -rf /opt/local/bin/node /opt/local/include/node /opt/local/lib/node_modules
sudo rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node.1 /usr/local/lib/dtrace/node.d

另外,NVM 修改了$HOME/.bashrc 中的 PATH 变量,它必须是reverted manually

然后下载 nvm 并按照说明安装节点。我相信最新版本的 node 带有 npm,但你也可以重新安装它。

【讨论】:

  • 我也必须rm -rf /Users/[homedir]/.npm
  • 还需要删除/Users/[homedir]/.nvm
  • 我还运行了 brew doctorbrew prune 来清理一堆损坏的 NPM 符号链接。
  • 我拼凑了一个经过实战测试的脚本。谢谢@DominicTancredi,这很好用! gist.github.com/brock/5b1b70590e1171c4ab54
  • 我还必须添加:sudo rm -rf ~/.node-gyp。在我改用 brew 之前,我已经用 MacPorts 添加了它。
【解决方案2】:

对于 brew 用户,OSX

删除:

brew uninstall node; 
# or `brew uninstall --force node` which removes all versions
brew cleanup;
rm -f /usr/local/bin/npm /usr/local/lib/dtrace/node.d;
rm -rf ~/.npm;

安装:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules' # <--- add this ~/.bashrc

您可以运行brew info node 以获取有关您的节点安装的更多详细信息。


考虑使用 NVM 代替 brew

NVM(节点版本管理器)是管理多个节点版本的便携式解决方案

https://github.com/nvm-sh/nvm

> nvm uninstall v4.1.0
> nvm install v8.1.2
> nvm use v8.1.2
> nvm list
         v4.2.0
         v5.8.0
        v6.11.0
->       v8.1.2
         system

you can use this with AVN 在您在具有不同节点依赖关系的不同项目之间跳转时自动切换版本。

【讨论】:

  • 如何设置环境变量,以便在安装后节点和 npm 可用?
  • 您可能需要使用 --force 标志运行 brew 以确保删除所有版本的节点:$ brew uninstall --force node
  • -bash: /usr/local/bin/npm: No such file or directory我现在能做什么?
  • > "考虑使用 NVM 代替 brew";具有讽刺意味的是,您可以 with brew! 安装 NVM!很好的提示,谢谢。
  • 使用 NVM 有所帮助。
【解决方案3】:

我知道这篇文章有点过时了,但只是想分享在终端中删除 Node.js 时对我有用的命令。

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do  sudo rm /usr/local/${f}; done
 
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

更新:23 SEP 2016


如果你害怕运行这些命令...

感谢jguixthis quick tutorial

首先,创建一个中间文件:

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom >> ~/filelist.txt

手动查看您的文件(位于您的 Home 文件夹中)

 ~/filelist.txt

然后删除文件:

cat ~/filelist.txt | while read f; do sudo rm /usr/local/${f}; done

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

适用于 10.10.5 及以上版本

谢谢Lenar Hoyt

要点评论来源:gistcomment-1572198

原文要点: TonyMtz/d75101d9bdf764c890ef

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

【讨论】:

  • 哇——这太可怕了。至少第一个“rm”不是“rm -rf”,如果 sbom 的输出有一个空行,它将删除所有 /usr/local。在做任何如此严厉的事情之前,请仔细检查 sbom 输出以及所有这些目录的来源,并确保您确切知道要删除的内容。
  • 我应该补充... rf /",完全没有。一个喷嚏,或者猫跳到你的键盘上,你的文件系统就被破坏了。
  • 它是 org.nodejs.node.pkg.bom 而不是 org.nodejs.pkg.bom
  • @DonHatch 复制没有第一个字母的行,使其以udo.. 开头,然后在运行前添加s
  • lsbom 命令输出相对路径,因此脚本试图删除看起来像/usr/local/./node/yada 的路径。要删除 ./ 前缀,我使用了过滤器:lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | cut -c 3- | while read f; do sudo rm /usr/local/${f}; done
【解决方案4】:

在 Mavericks 上,我从节点 pkg(来自 nodejs 站点)安装它,然后将其卸载,以便可以使用 brew 重新安装。我只在终端中运行了 4 个命令:

  1. sudo rm -rf /usr/local/lib/node_modules/npm/
  2. brew uninstall node
  3. brew doctor
  4. brew cleanup --prune-prefix

如果还有节点安装,重复第2步。一切ok后,我使用brew install node安装

【讨论】:

  • 1 成功,但 2 失败。我得到“没有这样的小桶:usr/local/Cellar/node”
  • 是的,如果你正在运行 Mavericks,这是最好的
  • 我试过了,但又得到同样的错误错误:brew link 步骤没有成功完成
  • 谢谢,完美,除了我必须添加 --force 来 brew uninstall
  • 仅供参考:撰写本文时 - -&gt;brew prune Error: Calling 'brew prune' is disabled! Use 'brew cleanup --prune-prefix' instead.
【解决方案5】:

我已经总结了现有的答案,并确保 Node.js 与 NPM 一起完全擦除

要复制到终端的行:

brew uninstall node;
which node;
sudo rm -rf /usr/local/bin/node;
sudo rm -rf /usr/local/lib/node_modules/npm/;
brew doctor;
brew cleanup --prune-prefix;

【讨论】:

  • 我按照这些步骤进行操作,似乎奏效了。我的根文件夹中仍有目录,例如 .node-gyp/.npm/.npm-global/.nvm/。如果我打算重新安装节点,我可以删除它们还是应该保留它们?
  • 所有的东西,你可能想删除 /node-gyp/
【解决方案6】:

https://stackabuse.com/how-to-uninstall-node-js-from-mac-osx/

在 MACOS 中运行以下命令从系统中完全删除节点

sudo rm -rf ~/.npm ~/.nvm ~/node_modules ~/.node-gyp ~/.npmrc ~/.node_repl_history
sudo rm -rf /usr/local/bin/npm /usr/local/bin/node-debug /usr/local/bin/node /usr/local/bin/node-gyp
sudo rm -rf /usr/local/share/man/man1/node* /usr/local/share/man/man1/npm*
sudo rm -rf /usr/local/include/node /usr/local/include/node_modules
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /usr/local/lib/dtrace/node.d
sudo rm -rf /opt/local/include/node /opt/local/bin/node /opt/local/lib/node
sudo rm -rf /usr/local/share/doc/node
sudo rm -rf /usr/local/share/systemtap/tapset/node.stp

brew uninstall node
brew doctor
brew cleanup --prune-prefix



在此之后,我建议使用以下命令使用 nvm 安装节点(查看https://github.com/nvm-sh/nvm 以获取最新版本)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

来自https://github.com/nvm-sh/nvm


为什么选择 nvm?
这是一个好问题,会有项目需要不同版本的节点,
即A 需要 node 版本 12,B 需要 node 版本 14。node 的版本管理仅由 nvm 提供。

【讨论】:

  • 你是我的英雄
  • 这在 2021 年 5 月对我有用,使用的是 Mac OS:10.15.6。谢谢你:)
  • 为什么建议使用 nvm 安装 node 而不是 brew 或 npm?
  • @SamBruton 更新了上面的答案也是因为无论如何。我们需要 nvm,所以最好只使用 nvm 安装节点
  • 2021 年 11 月为我工作,使用 Mac OS 11.5.2
【解决方案7】:
  1. 第一:

    lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do  sudo rm /usr/local/${f}; done
    
    sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
    
  2. 回顾一下,完全卸载 node + npm 的最佳方法(我发现)是执行以下操作:

    转到/usr/local/lib 并删除任何节点和node_modules

    cd /usr/local/lib
    
    sudo rm -rf node*
    
  3. 转到/usr/local/include 并删除所有节点和node_modules 目录

    cd /usr/local/include
    
    sudo rm -rf node*
    
  4. 如果您使用brew install node 安装,则在您的终端中运行brew uninstall node

    brew uninstall node
    
  5. 检查您的主目录是否有任何“本地”或“lib”或“包含”文件夹,并从那里删除任何“节点”或“节点模块”

    转到 /usr/local/bin 并删除任何节点可执行文件

    cd /usr/local/bin
    
    sudo rm -rf /usr/local/bin/npm
    
    ls -las
    
  6. 您可能还需要执行其他说明:

    sudo rm -rf /usr/local/share/man/man1/node.1
    
    sudo rm -rf /usr/local/lib/dtrace/node.d
    
    sudo rm -rf ~/.npm
    

来源:tonyMtz

【讨论】:

  • 删除 node* 并不是一种特别安全的方法。可能还有其他带有该前缀的二进制文件。
  • 太好了,终于在 3 天后,时不时出现 npm 问题,完全删除并在我的 mac 上使用 brew 重新安装,就像一个魅力。
  • 当第一个命令得到can't open /var/db/receipts/org.nodejs.pkg.bom: No such file or directory **** Can't open /var/db/receipts/org.nodejs.pkg.bom.时请帮忙
  • 即使在 Mac 10.13.5 上执行了这些步骤后,我仍然可以看到 npm 和 node 可能出了什么问题?
【解决方案8】:

将节点降级到 0.10.36

  sudo npm cache clean -f
  sudo npm install -g n
  sudo n 0.10.36

升级节点到稳定的v

  sudo npm cache clean -f
  sudo npm install -g n
  sudo n stable

【讨论】:

  • 我刚做了这个,奇怪的是,它把 npm 从 6.4.1 降级到了 6.2.0。
【解决方案9】:

我不确定是因为我有旧版本(4.4.5),还是因为我使用了官方安装程序,但其他答案中引用的大多数文件在我的系统上不存在。我只需要删除以下内容:

~/.node-gyp
~/.node_repl_history
/usr/local/bin/node
/usr/local/bin/npm
/usr/local/include/node
/usr/local/lib/dtrace/node.d
/usr/local/lib/node_modules
/usr/local/share/doc/node
/usr/local/share/man/man1/node.1
/usr/local/share/systemtap/tapset/node.stp

我决定保留~/.npm,因为我打算用 Homebrew 重新安装 Node。

【讨论】:

  • 这个答案是在 2012 年做出的,所以我确信它有一些遗留问题。现在,如果出现新答案,我会在查看它们是否有效后投票赞成。
【解决方案10】:

在 macOS Big Sur 版本 11.2.3 (20D91) 上完全卸载 Nodejs


简介

首先,我想说谢谢你分享这个trick@tonymtz

我的系统正在运行macOS Big Sur version 11.2.3 (20D91),并从官方网站安装nodejs Latest Current Version: 15.14.0 (includes npm 7.7.6)

我尝试在我的 MacBook Pro 上完全卸载 nodejs,以便使用 homebrew 包管理器重新安装它:

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do  sudo rm /usr/local/${f}; done

但我遇到了@JohelAlvarezanswer 中提到的@AhteshamShah 之类的问题:

当触发第一个命令时:can't open /var/db/receipts/org.nodejs.pkg.bom: No such file or directory **** Can't open /var/db/receipts/org.nodejs.pkg.bom. – Ahtesham Shah 2019 年 6 月 20 日在 5:09

我潜入了@JohelAlvarez 链接的the original post,阅读了所有的cmets,我从@e2tha-e 找到了这个comment

@tonymtz 在 Yosemite 10.10.5 上安装 Node v4.0.0 时,第一行需要是 lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; doneorg.nodejs.pkg.bom 不同的文件名 否则,这就像一个魅力!

@e2tha-e 是对的,在macOS Big Sur version 11.2.3 (20D91) 上,从官网安装了nodejs Latest Current Version: 15.14.0 (includes npm 7.7.6),文件名不是org.nodejs.pkg.bom 而是org.nodejs.node.pkg.bom

你可以在cd /var/db/receipts/ &amp;&amp; ls -la时查看这个。

从Nodejs官网安装解决方案

使用您喜欢的终端,从您的系统中完全卸载 Nodejs,如下所示:

选项 1

  1. lsbom -f -l -s -pf /var/db/receipts/org.nodejs.node.pkg.bom | while read f; do sudo rm /usr/local/${f}; done
  2. sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

选项 2

转到/var/db/receipts/ 并删除任何org.nodejs.*

  1. cd /var/db/receipts/ &amp;&amp; ls -la
  2. sudo rm -rf org.nodejs.*

转到/usr/local/lib 并删除任何nodenode_modules

  1. cd /usr/local/lib &amp;&amp; ls -la
  2. sudo rm -rf node*

转到/usr/local/include 并删除任何nodenode_modules 目录

  1. cd /usr/local/include &amp;&amp; ls -la
  2. sudo rm -rf node*

检查您的 $HOME 目录是否有任何“本地”或“lib”或“包含”文件夹,并从那里删除任何“节点”或“节点模块”。

转到/usr/local/bin 并删除任何节点可执行文件

  1. cd /usr/local/bin &amp;&amp; ls -la
  2. sudo rm -rf /usr/local/bin/npm
  3. sudo rm -rf /usr/local/bin/node

您可能也需要这样做:

  1. sudo rm -rf /usr/local/share/man/man1/node.1
  2. sudo rm -rf /usr/local/lib/dtrace/node.d
  3. sudo rm -rf ~/.npm

之后,您可以使用which node 检查系统中是否还有node,或者查找系统中所有出现的节点。


提示

  1. 使用find / -name 'node' | sed -E 's|/[^/]+$||' |sort -u搜索节点文件的位置
  2. 在运行其他人共享的代码之前,请先检查您的目录,确保您编写了正确的文件名。

【讨论】:

  • 今天,2021 年 10 月,node-v17.0.0.pkg(也支持 M1)的 BOM 包含 ./usr/local 前缀。因此,“选项 1”中的rm 命令不需要为该版本添加该前缀。
【解决方案11】:
  • 从 /usr/local/lib 中删除节点和/或节点模块

    ex code:
    cd /usr/local/lib
    sudo rm -rf node
    sudo rm -rf node_modules
    
  • 从 /usr/local/include 中删除节点和/或节点模块

  • 从 /usr/local/bin 中删除节点、node-debug 和 node-gyp

  • 从您的主目录中删除 .npmrc(这些是您的 npm 设置,如果您打算立即重新安装 Node,请不要删除它)

  • 从您的主目录中删除 .npm

  • 从您的主目录中删除 .node-gyp

  • 从您的主目录中删除 .node_repl_history

  • 从 /usr/local/share/man/man1/ 中删除节点*

  • 从 /usr/local/share/man/man1/ 中删除 npm*

  • 从 /usr/local/lib/dtrace/ 中删除 node.d

  • 从 /usr/local/opt/local/bin/ 中删除节点

  • 从 /usr/local/opt/local/include/ 中删除节点

  • 从 /usr/local/opt/local/lib/ 中删除节点模块

  • 从 /usr/local/share/doc/ 中删除节点

  • 从 /usr/local/share/systemtap/tapset/ 中删除 node.stp

【讨论】:

  • 我还必须从 /usr/local/opt/ 中删除 node@6
【解决方案12】:

为我工作。

$node --version

v11.1.0

$nvm deactivate

$nvm uninstall v11.1.0

【讨论】:

【解决方案13】:

之后

brew uninstall node

我必须知道哪个节点

which node

然后删除它

rm -rf /usr/local/bin/node

【讨论】:

    【解决方案14】:

    如果你已经安装了nvm那么执行以下命令

    • nvm deactivate - 这将从 $PATH 中删除 /.nvm/*/bin
    • nvm list - 列出系统中安装的所有节点版本
    • nvm uninstall &lt;version&gt; 中可以指定要卸载的所有版本。

    使用nvm 安装节点并使用nvm 卸载总是好的 而不是brew

    这个解决方案对我有用。

    附加命令

    • which node 了解系统中安装的节点的路径。您可以 rm 此目录手动卸载节点。然后您可能需要相应地调整 PATH 文件。

    【讨论】:

      【解决方案15】:

      Dominic Tancredi's awesome answer 上进行扩展,我已将它整合到一个 bash 包和独立脚本中。如果您已经在使用名为bpkg 的“Back Package Manager”,您可以通过运行安装脚本:

      bpkg install -g brock/node-reinstall
      

      或者您可以查看 Github 上的脚本 brock/node-reinstall。该脚本允许您使用 nvm 或 nave 重新安装节点,并将节点版本指定为默认值。

      【讨论】:

      • 我正要发布这个,看到作者自己发布了这个问题的最佳答案:使用 node-reinstall 一次,你永远不会回头。让我开始行动,为更多的发展做好准备!为这个@brockangelo 干杯!
      • 警告.....node-reinstall 脚本包含这一行:sudo rm -rf $HOME/{local,lib,include,node*,npm,.npm*} 因此,如果您碰巧在您的 $HOME 中独立拥有该名称的目录(就像我一样),那就是会被打败的!
      【解决方案16】:

      除了我需要删除在以下位置找到的所有 npm 实例的主要答案之外:

      rm -rf /usr/local/share/man/man1/npm*
      

      【讨论】:

      • 这应该是对适当答案的评论,而不是新答案。
      【解决方案17】:

      也许你需要做

      hash -r 
      

      它有助于解决符号链接问题

      $ node -v
      $ bash: /opt/local/bin/node: No such file or directory
      

      【讨论】:

        【解决方案18】:

        最好的方法是在 mac 上下载安装程序包:.pkg。首选最新的稳定版本。

        这里是链接:Node.js

        这个包最终会覆盖以前的版本并相应地设置环境变量。只需运行安装程序,点击几下即可完成。

        【讨论】:

          【解决方案19】:

          在我的 Mac 上卸载 Node.js 时遇到了一个问题。我有一些奇怪的行为,比如 npm 仍然存在,即使在不得不删除它之后。

          这是因为我使用 macport 完成了旧安装。所以你还必须使用端口卸载它:

          sudo port uninstall nodejs
          

          它可能安装了许多不同版本的 Node.js,因此请全部卸载(一个一个)。

          【讨论】:

          • 这正是发生在我身上的事情 :-) 感谢您的补充答案。好吧,我开始有几个版本的 Cordova,一个 npm 无法删除一个 Cordova,反之亦然。
          【解决方案20】:

          您可以克隆https://github.com/brock/node-reinstall 并运行存储库中给出的简单命令。之后只需重新启动系统即可。
          这是最简单的方法,对我也有效。

          【讨论】:

            【解决方案21】:

            我从 git 存储库下载的源代码安装了 Node.js。我安装了:

            ./configure
            $ make
            $ sudo make install
            

            因为make文件支持,所以可以:

            $ sudo make uninstall
            

            【讨论】:

            • 如何并行运行?说我想运行 2 个版本?
            【解决方案22】:

            作为解释通过自制软件进行清理和安装的答案的伴侣,我发现自制软件本身提供了符号链接冲突的明确指示。

            不幸的是,它会在遇到它们时一一提供,因此有点费力,但它似乎确实找到了所有冲突,并且是我可以使用自制软件进行全新安装的唯一方法。

            本质上,过程是:

            1. 使用自制软件卸载节点
            2. 干净的自制软件
            3. 使用自制软件安装节点并记下任何标记的冲突文件
            4. 删除标志冲突文件(如果是“节点”目录,则删除整个目录)
            5. 转到第 1 步,直到获得全新安装

            :

            这是我安装的最后一步的屏幕输出 - 您可以看到它导致全新安装(最终...):

            computer1:DevResources user1$ brew install node
            Updating Homebrew...
            ==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
            Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
            ==> Pouring node-13.1.0.mojave.bottle.tar.gz
            Error: The `brew link` step did not complete successfully
            The formula built, but is not symlinked into /usr/local
            Could not symlink share/systemtap/tapset/node.stp
            Target /usr/local/share/systemtap/tapset/node.stp
            already exists. You may want to remove it:
              rm '/usr/local/share/systemtap/tapset/node.stp'
            
            To force the link and overwrite all conflicting files:
              brew link --overwrite node
            
            To list all files that would be deleted:
              brew link --overwrite --dry-run node
            
            Possible conflicting files are:
            /usr/local/share/systemtap/tapset/node.stp
            /usr/local/lib/dtrace/node.d
            ==> Caveats
            Bash completion has been installed to:
              /usr/local/etc/bash_completion.d
            ==> Summary
            ?  /usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
            computer1:DevResources user1$ rm '/usr/local/share/systemtap/tapset/node.stp'
            computer1:DevResources user1$ brew uninstall node
            Uninstalling /usr/local/Cellar/node/13.1.0... (4,591 files, 54.2MB)
            computer1:DevResources user1$ brew cleanup
            computer1:DevResources user1$ brew install node
            Updating Homebrew...
            ==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
            Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
            ==> Pouring node-13.1.0.mojave.bottle.tar.gz
            Error: The `brew link` step did not complete successfully
            The formula built, but is not symlinked into /usr/local
            Could not symlink lib/dtrace/node.d
            Target /usr/local/lib/dtrace/node.d
            already exists. You may want to remove it:
              rm '/usr/local/lib/dtrace/node.d'
            
            To force the link and overwrite all conflicting files:
              brew link --overwrite node
            
            To list all files that would be deleted:
              brew link --overwrite --dry-run node
            
            Possible conflicting files are:
            /usr/local/lib/dtrace/node.d
            ==> Caveats
            Bash completion has been installed to:
              /usr/local/etc/bash_completion.d
            ==> Summary
            ?  /usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
            computer1:DevResources user1$ rm '/usr/local/lib/dtrace/node.d'
            computer1:DevResources user1$ 
            computer1:DevResources user1$ brew uninstall node
            Uninstalling /usr/local/Cellar/node/13.1.0... (4,591 files, 54.2MB)
            computer1:DevResources user1$ brew cleanup
            computer1:DevResources user1$ brew install node
            Updating Homebrew...
            ==> Downloading https://homebrew.bintray.com/bottles/node-13.1.0.mojave.bottle.tar.gz
            Already downloaded: /Users/user1/Library/Caches/Homebrew/downloads/da904f1fdab6f6b2243a810b685e67b29a642c6e945f086e0022323a37fe85f9--node-13.1.0.mojave.bottle.tar.gz
            ==> Pouring node-13.1.0.mojave.bottle.tar.gz
            ==> Caveats
            Bash completion has been installed to:
              /usr/local/etc/bash_completion.d
            ==> Summary
            ?  /usr/local/Cellar/node/13.1.0: 4,591 files, 54.2MB
            computer1:DevResources user1$ node -v
            v13.1.0
            

            【讨论】:

              【解决方案23】:

              首先,你需要在安装新的node版本后停用node:(mac)。

              nvm deactivate
              

              这已从 $PATH 中删除 /Users/user_name/.nvm/*/bin

              在那个节点被更新之后

              node --version
              v10.9.0
              

              【讨论】:

                【解决方案24】:

                Docker - 替代方法

                Docker 是一种超快的虚拟机,可以用来运行 node 等工具(而不是直接安装在 mac-os 上)。这样做的好处如下

                • 所有东西(“百万”节点文件)都安装在 docker 映像/容器中(它们封装在几个内部 docker 文件中)

                • 您可以将带有项目的 mac 目录映射到您的 docker 容器并可以访问节点 - 但在 docker 之外,mac-os 系统甚至不知道该节点已安装。因此,您将获得某种“虚拟”控制台,其中包含可用于真实文件的可用节点命令

                • 您可以通过docker ps 找到它并通过docker rm -f name_or_num 杀死它来轻松杀死节点

                • 您可以通过一个命令docker rmi ... 轻松卸载 docker 映像/容器并获得可用空间 - 并通过运行脚本(如下)再次安装

                • 您的节点被封装在 docker 中,无法访问整个系统 - 只能访问您映射到它的文件夹

                • 您可以运行节点服务并轻松地将它们的端口映射到 mac 端口,并可以从 Web 浏览器访问它

                • 您可以同时运行多个节点版本

                • 以类似的方式,您可以安装其他工具,例如(同时在多个版本中):php、数据库、redis 等 - 在 docker 内部,无需与 mac-os 进行任何交互(根本不会注意到此类软件)。例如。您可以同时运行 3 个具有不同版本的 mysql db 和 3 个具有不同 php 版本的 php 应用程序... - 所以您可以拥有许多工具但系统干净

                • 团队合作:这样的环境可以很容易地克隆到其他机器中(甚至可以克隆到 windows/linux 系统 - 进行一些修改)并提供相同的 docker 级环境 - 因此您可以轻松设置和重用脚本/dockerfile,以及以非常快速的方式为新团队成员设置环境(他只需要安装 docker 并创建类似的文件夹结构并获取脚本的副本 - 仅此而已)。我以这种方式工作了 2 年,并与我的团队一起工作 - 我们很高兴

                说明

                • 使用例如安装 docker this instructions

                • 为工作准备“特殊”目录,例如我的目录是/Users/kamil/work(我将进一步使用这个目录 - 但它可以是任意的) - 这个目录将是 docker 容器和你的 mac 文件 ststem 之间的“接口”。在此目录中创建以下目录结构:

                  /Users/kamil/work/code - 你把你的项目和代码放在这里

                  /Users/kamil/work/tools

                  /Users/kamil/work/tools/docker-data - 我们在这里映射容器输出数据,如日志(或数据库文件,如果有人使用 db 等)

                  /Users/kamil/work/tools/docker

                  /Users/kamil/work/tools/docker/node-cmd - 我们在这里放置 docker 节点脚本

                • tools 内创建文件.env,它将在一处包含其他脚本中使用的全局路径

                  toolspath="/Users/kamil/work/tools"
                  codepath="/Users/kamil/work/code"
                  workpath=/Users/kamil/work
                • innside dir ../node-cmd 创建文件dockerfile 包含以下内容

                  # default  /var/www/html (mapped to .../code folder with projects)
                  FROM node
                  
                  WORKDIR /work
                  
                  # Additional arbitrary tools (ng, gulp, bower)
                  RUN npm install -g n @angular/cli bower gulp grunt
                  
                  CMD while true; do sleep 10000; done
                  
                  # below ports are arbitrary
                  EXPOSE 3002 3003 3004 4200
                • innside dir ../node-cmd 创建文件run-container 具有以下内容(该文件应该可以由chmod +x run-container 执行) - (注意我们如何将port-s 和目录从外部“世界”映射到内部docker 文件系统)

                  set -e
                  cd -- "$(dirname "$0")" # this script dir (not set on doubleclick)
                  source ../../.env
                  toolsdir=$toolspath/docker-data
                  workdir=$workpath
                  
                  if [ ! "$(docker ps | grep node-cmd)" ] 
                  then 
                    docker build -t node-cmd .
                    docker rm -f node-cmd |:
                    docker run -d --name node-cmd -p 4200:4200 -p 4201:4201 -p 3002:3002 -p 3003:3003 -p 3004:3004 -v $toolsdir/node-cmd/logs:/root/.npm/_logs -v $workdir:/work node-cmd
                  fi
                • 好的,现在您可以添加一些项目,例如work/code/myProject 并在文件“run-cmd”后面添加(必须是可执行的)

                  cd -- "$(dirname "$0")"
                  ../../tools/docker/node-cmd/run-container
                  docker exec -it node-cmd bash -c "cd /work/code/myProject; bash"
                • 然后,如果您运行上面的脚本(通过双击),您将在项目目录中看到带有可用节点命令的控制台,例如npm install

                • 在后台运行项目(例如一些服务)例如运行 web-server angular-cli 应用程序,您可以使用以下脚本(命名为 run-front - 必须是可执行的)-(您还必须编辑 /etc/hosts 文件以添加正确的域)

                  cd -- "$(dirname "$0")"
                  open "http://my-angular.local:3002"
                  ../../tools/docker/node-cmd/run-container
                  docker exec -it node-cmd  /bin/sh -c "cd /work/code/my-angular-project; npm start"
                  cat         # for block script and wait for user ctrl+C

                【讨论】:

                  【解决方案25】:

                  就我而言,其他答案均无效,因为我之前已降级到 node8。所以不是上面做的,下面对我有用:

                  which node
                  

                  返回 /usr/local/bin/node@8 而不是 /usr/local/bin/node

                  所以我执行了这个命令:

                  brew uninstall node@8
                  

                  它工作,然后从官方网站下载最新的 pkg 并安装。之后我不得不关闭我的终端并重新开始访问新版本

                  【讨论】:

                    【解决方案26】:

                    如果您无法找到节点,只需运行 whereis nodewhereis npmwhereis nvm,您可以根据需要删除列出的目录。

                    您还需要完全关闭终端并重新打开它才能使更改生效。

                    【讨论】:

                      【解决方案27】:

                      这为我修复了它Fixing npm On Mac OS X for Homebrew Users。而且不需要太多的步骤。

                      如果您不关心原因,请转到解决方案部分。

                      为方便起见,以下是相关部分:

                      解决方案

                      此解决方案修复了尝试运行npm update npm -g 导致的错误。完成后,您也无需使用 sudo 全局安装 npm 模块。

                      在开始之前,请记下所有全局安装的 npm 包。这些说明将让您删除所有这些软件包。完成后,您需要重新安装它们。

                      运行以下命令删除所有现有的全局 npm 模块,卸载节点和 npm,使用正确的默认值重新安装节点,配置要安装的全局 npm 模块的位置,然后将 npm 作为自己的包安装。

                      rm -rf /usr/local/lib/node_modules
                      brew uninstall node
                      brew install node --without-npm
                      echo prefix=~/.npm-packages >> ~/.npmrc
                      curl -L https://www.npmjs.com/install.sh | sh
                      

                      此时应正确安装 Node 和 npm。最后一步是将 ~/.npm-packages/bin 添加到您的 PATH 以便 npm 和全局 npm 包可用。为此,将以下行添加到您的~/.bash_profile

                      export PATH="$HOME/.npm-packages/bin:$PATH"
                      

                      现在您可以毫无问题地重新安装所需的任何全局 npm 包。

                      【讨论】:

                      • 在 Stack Overflow 上不鼓励仅链接的答案。
                      • @AndrewGrimm 有道理,我复制了相关部分。
                      • 输入以下命令后出现以下错误: curl -L npmjs.com/install.sh | sh ....npm 错误!可以在以下位置找到此运行的完整日志:npm ERR! /Users/bddev/.npm/_logs/2018-10-18T20_02_34_337Z-debug.log npm 错误!代码 E404 npm 错误! 404 未找到:1.535s@latest npm ERR!可以在以下位置找到此运行的完整日志:npm ERR! /Users/bddev/.npm/_logs/2018-10-18T20_02_36_399Z-debug.log 失败了
                      • --without-npm 没有brew install node 选项。
                      【解决方案28】:

                      @lfender6445 answer 工作正常,我可以卸载

                      现在要重新安装,我在安装最后一个版本而不是最稳定的版本时遇到问题,因此要安装特定的节点版本,您应该这样做:

                      brew install node@10 // 10 is the version I want
                      brew link node@10
                      

                      【讨论】:

                        【解决方案29】:

                        对于使用n 的任何人,当您更改节点版本时,它会自动重新安装 npm。您可以通过运行以下命令来逆转npm upgrade 损坏:

                        1. n(选择不同的node版本,npm会重新安装)
                        2. n(这次选择你喜欢的版本)
                        3. npm -v(它将是旧版本的 NPM)
                        4. npm install -g npm@7.x.x(插入适当的版本)

                        【讨论】:

                          【解决方案30】:

                          我遇到了同样的问题(运行 Fedora 34)。

                          是因为使用了 n:https://www.npmjs.com/package/n

                          n 帮助您管理不同版本的节点,但它有自己的方式来做到这一点,而不是通过操作系统包管理器!

                          这就是为什么会有这些带有节点的 unexpeted 文件夹。

                          这对我有用:

                          1. 重新安装 node 和 npm。
                          2. 重新安装 n (sudo npm i -g n)
                          3. sudo n prune(删除所有缓存的版本)
                          4. sudo n uninstall(删除活动版本)
                          5. 现在您只安装了预期版本的节点(步骤 1 中安装的那个)

                          【讨论】:

                            猜你喜欢
                            • 2014-09-01
                            • 2012-02-21
                            • 2016-11-18
                            • 1970-01-01
                            • 2012-10-27
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多