1578

即使我安装了 brew node 和 NVM install v0.6.19,我的节点版本始终是 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 updateand brew install node. 我试过删除我的“节点”目录/usr/local/include和我的/usr/local/lib. 我已经尝试卸载 npm 并按照这些说明重新安装它。

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

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

4

34 回答 34

1889

显然,有一个/Users/myusername/local文件夹包含一个includewithnodelibwith nodeand node_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并删除任何节点node_modules
  2. 转到/usr/local/include并删除任何节点node_modules目录
  3. 如果您使用brew install node 安装,则在终端中运行brew uninstall node
  4. 检查您的主目录是否有任何本地lib包含文件夹,并从那里删除任何节点node_modules
  5. 转到/usr/local/bin并删除任何节点可执行文件

您可能还需要这样做:

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 修改了 PATH 变量$HOME/.bashrc,必须手动恢复

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

于 2012-06-24T14:04:58.760 回答
635

对于 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

当您在具有不同节点依赖关系的不同项目之间跳转时,您可以将其与 AVN一起使用来自动切换版本。

于 2014-11-13T22:19:48.177 回答
204

我知道这篇文章有点过时了,但只是想分享在删除 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


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

感谢jguix提供的这个快速教程

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

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 及更高版本

谢谢莱纳霍伊特_

要点评论来源: 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.*
于 2014-07-07T13:40:51.407 回答
160

在 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

如果还有node安装,重复第2步。毕竟ok,我安装使用brew install node

于 2014-01-17T23:26:44.370 回答
81

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


为什么是非虚拟机?
这是一个好问题,会有项目需要不同版本的node,
即A需要node版本12,而B需要node版本14。node的这个版本管理只由nvm提供。

于 2020-06-13T06:16:02.030 回答
76

我已经总结了现有的答案,并确保 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;
于 2020-01-23T16:28:34.327 回答
39
  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

于 2015-06-28T17:24:17.980 回答
31

将节点降级到 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
于 2015-05-29T03:06:46.757 回答
29

我不确定是因为我有旧版本(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。

于 2017-01-25T18:42:42.797 回答
23

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


介绍

首先,我想说谢谢你分享这个技巧 @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

但我遇到了@JohelAlvarez的回答中提到的@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 链接的原始帖子,阅读了所有评论,我从@e2tha-e找到了这条评论

@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}; done 与否则不同的文件名org.nodejs.pkg.bom ,这就像一个魅力!

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

您可以在cd /var/db/receipts/ && 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/ && ls -la
  2. sudo rm -rf org.nodejs.*

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

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

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

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

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

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

  1. cd /usr/local/bin && 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

node之后,您可以检查系统中是否仍然存在which node或查找系统中所有出现的节点。


尖端

  1. 搜索节点文件所在的位置find / -name 'node' | sed -E 's|/[^/]+$||' |sort -u
  2. 在运行其他人共享的代码之前,请先检查您的目录以确保您编写了正确的文件名。
于 2021-04-08T10:08:29.960 回答
16
  • 从 /usr/local/lib 中删除节点和/或 node_modules

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

  • 从 /usr/local/bin 中删除 node、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/ 中删除 node_modules

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

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

于 2019-03-28T16:00:19.987 回答
12

为我工作。

$node --version

v11.1.0

$nvm deactivate

$nvm uninstall v11.1.0
于 2018-11-05T08:44:42.717 回答
12

brew uninstall node

我必须知道哪个节点

which node

然后删除它

rm -rf /usr/local/bin/node
于 2019-04-17T20:06:10.260 回答
10

如果你已经安装了nvm然后执行以下命令

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

使用nvmnvm 不是brew.

这个解决方案对我有用。

附加命令

  • which node了解系统中安装的节点的路径。您可以 rm 此目录手动卸载节点。然后您可能需要相应地调整 PATH 文件。
于 2019-05-11T05:57:21.413 回答
9

扩展Dominic Tancredi 的出色答案,我将其整合到 bash 包和独立脚本中。如果您已经在使用名为bpkg的“Back Package Manager” ,您可以通过运行以下命令来安装脚本:

bpkg install -g brock/node-reinstall

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

于 2015-03-11T16:18:37.400 回答
8

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

rm -rf /usr/local/share/man/man1/npm*
于 2015-01-09T22:02:31.480 回答
7

也许你需要做

hash -r 

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

$ node -v
$ bash: /opt/local/bin/node: No such file or directory
于 2014-09-20T12:13:44.463 回答
6

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

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

sudo port uninstall nodejs

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

于 2013-08-14T20:26:35.690 回答
6

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

这是链接:Node.js

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

于 2018-08-24T23:52:29.977 回答
6

卸载 NodeJS 的步骤:

对于带有 M1 芯片的 MacOS Monterey,请按照以下链接从系统中完全卸载 node。我尝试了多种方法,但这个方法终于奏效了。

从 Mac M1 Monterey 卸载 NodeJS 和 NPM

此外,请在最后执行以下命令以从 bin 文件夹中删除节点相关目录。

sudo rm -R node-sass
sudo rm -R npm
sudo rm -R npx

要验证该节点是否已删除:

node --version

它应该说找不到命令。

安装 NodeJS 的步骤:

使用 M1 芯片在 Mac 上启用 Rosseta 终端。 如何启用罗塞塔终端

使用 nvm (Node Version Manager) 在你的机器上安装 NodeJS。为什么是非虚拟机??因为您可以运行多个版本的 NodeJS(您可以使用新应用程序以及旧版应用程序)。

如何使用 nvm 安装多个版本的 NodeJS

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

如果不存在,则创建一个 .zshrc 文件。

touch ~/.zshrc

使用 nvm 安装节点。

nvm install node # "node" is an alias for the latest version
nvm install 14.7.0 # or 16.3.0, 12.22.1, etc

要验证可用的 NodeJS 版本的数量:

nvm ls
于 2021-12-28T13:04:38.843 回答
5

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

于 2016-12-09T11:00:56.850 回答
4

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

./configure
$ make
$ sudo make install

因为make文件支持它,我可以这样做:

$ sudo make uninstall
于 2015-07-22T20:11:31.963 回答
4

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

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

本质上,该过程是:

  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
于 2019-11-21T14:24:28.940 回答
4

在 macOS Monterey 版本 12.0.1 上完成卸载 Node.js

要检查系统上安装的当前节点版本:

# node -v
# v14.15.0

输入以下命令从系统中删除节点:

# cd /usr/local/include
# sudo rm -R node
# cd ../lib
# sudo rm -R node_modules
# cd ../bin
# sudo rm -R node

检查该节点不再存在

# node -v
# -bash: node: command not found

在 macOS Monterey 版本 12.0.1 上安装 Node.js

  1. 从官网下载node的LTS版本
  1. 双击node-v16.13.1.pkg安装包继续默认设置

  2. 输入node -v您的终端以打印当前安装的 node 版本:v16.13.1&npm -v以打印您机器上安装的当前 npm 版本:8.1.2

于 2021-12-15T23:13:08.300 回答
3

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

nvm deactivate

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

在该节点更新后

node --version
v10.9.0
于 2018-08-23T15:39:10.427 回答
3

Docker - 替代方法

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

  • 所有东西('milions'节点文件)都安装在 docker image/container 中(它们封装在几个内部 docker 文件中)

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

  • 你可以很容易地通过找到它docker ps并杀死节点来杀死它docker rm -f name_or_num

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

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

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

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

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

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

操作说明

  • 使用例如此说明安装 docker

  • 为工作准备“特殊”目录,例如我的目录是/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

  • 内部目录../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

于 2020-05-14T10:30:59.023 回答
2

这为我修复了在 Mac OS X 上为 Homebrew 用户修复 npm。而且它不需要太多的步骤。

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

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

解决方案

此解决方案修复了尝试运行导致的错误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到你的PATHnpm 和全局 npm 包是可用的。为此,将以下行添加到您的~/.bash_profile:

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

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

于 2015-02-09T10:36:18.493 回答
2

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

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

于 2019-03-13T12:52:56.410 回答
2

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

which node

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

所以我执行了这个命令:

brew uninstall node@8

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

于 2019-09-21T09:08:00.300 回答
1

@lfender6445答案对我来说很好卸载

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

brew install node@10 // 10 is the version I want
brew link node@10
于 2020-04-01T14:06:56.797 回答
1

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

  1. n(选择不同的节点版本,npm 会重新安装)
  2. n(这次,选择你喜欢的版本)
  3. npm -v(它将是旧版本的 NPM)
  4. npm install -g npm@7.x.x(插入适当的版本)
于 2021-07-31T14:47:59.653 回答
1

我有同样的问题(运行 Fedora 34)。

它是由使用 n 引起的:https ://www.npmjs.com/package/n

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

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

这对我有用:

  1. 重新安装节点和 npm。
  2. 重新安装 n (sudo npm i -gn)
  3. sudo n prune(删除所有缓存的版本)
  4. sudo n uninstall(删除活动版本)
  5. 现在您只安装了预期版本的节点(在步骤 1 中安装的那个)
于 2021-08-24T13:05:04.793 回答
0

我正在开发一个在 Windows 上有许多依赖项的 Angular 项目,并且正在运行 Node 14.17.0。突然我升级到 Node 最新版本 16.4.2 并开始出现冲突。

我决定降级,而不是一直使用 --legacy-peer-deps。

  1. 从控制面板卸载节点
  2. 只需使用 Installer 再次安装 Node 14

一切又好了。

于 2021-09-18T20:26:00.787 回答
-8

(服务器:ubuntu 14)

1.)安装nvm(节点版本管理器)https://github.com/creationix/nvm

2.) nvm 安装节点

3.) npm -v (查询 npm 版本 => 3.8.6)

4.) node -v (查询节点版本=> v6.0.0)

于 2016-05-04T05:57:21.123 回答