即使在我安装brew node和NVM安装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预版本在哪里?我该如何摆脱它?我正在尝试通过NPM安装库,以便我可以在项目中工作。

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

所有这些都是因为我试图更新节点的旧版本以安装“zipstream”库。现在我的用户目录中有文件夹,节点版本STILL不是最新的,尽管NVM说它使用的是0.6.19。

理想情况下,我希望卸载nodejs、npm和nvm,然后在我的系统上从头安装整个程序。


当前回答

更新:2016年9月23日-Intel Mac 10.11.x及以上版本

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

感谢jguix的快速教程。

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

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

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

 ~/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.*

Intel Mac 10.10.x及更低版本

谢谢Lenar Hoyt

Gist评论来源: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年7月7日

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

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.*

其他回答

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


介绍

首先,我想感谢你分享这个技巧@tonymtz。

我的系统运行的是macOS Big Sur 11.2.3版(20D91),nodejs最新当前版本:15.14.0(包括npm 7.7.6),从官方网站安装。

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

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

但我面临着一个问题,就像@JohnAlvarez的回答中提到的@AhteshamShah:

启动第一个命令geting时:无法打开/var/db/reports/org.nodejs.pkg.bom:没有这样的文件或目录***无法打开/var/db/reports/org.nodejs.pkg-bom。–Ahtesham Shah Jun 20'19 5:09

我一头扎进了@JohelAlvarez链接的原始帖子,阅读了所有评论,我从@e2tha-e找到了这条评论:

@tonymtz在Yosemite 10.10.5上安装Node v4.0时,第一行需要lsbom-f-l-s-pf/var/db/receives/org.nodejs.node.pkg.bom |读取f时;执行sudo rm/usr/local/${f};完成与org.nodejs.pkg.bom不同的文件名否则,这就像一个魅力!

@e2tha-e是正确的,在macOS Big Sur 11.2.3版(20D91)上,从官方网站安装了nodejs最新版本:15.14.0(包括npm 7.7.6),文件名不是org.nodejs.pkg.bom,而是org.nodejs.node.pkg.bcom。

您可以在cd/var/db/receives/&&ls-la时检查此项。

Nodejs官网安装解决方案

使用首选终端,从系统中完全卸载Nodejs,如下所示:

选项1

lsbom-f-l-s-pf/var/db/receives/org.nodejs.node.pkg.bom |读取f时;执行sudo rm/usr/local/${f};完成sudo rm-rf/usr/local/lib/node/usr/local/lib-node_modules/var/db/receives/org.nodejs*

选项2

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

cd/var/db/receives/&&ls-lasudo rm-rf org.nodejs*

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

cd/usr/local/lib&&ls-lasudo rm-rf节点*

转到/usr/local/include并删除任何节点和node_modules目录

cd/usr/local/include&&ls-lasudo rm-rf节点*

检查$HOME目录中的任何“本地”或“lib”或“include”文件夹,并从中删除任何“node”或“node_modules”。

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

cd/usr/local/bin&&ls-lasudo rm-rf/usr/local/bin/npmsudo rm-rf/usr/local/bin/node

您可能也需要这样做:

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

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


Tips

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

显然,有一个/Users/myusername/local文件夹包含一个包含node的include和一个包含节点和node_modules的lib。我不知道它是如何创建的,为什么不是在我的/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,请执行以下操作:

转到/usr/local/lib并删除任何节点和node_modules转到/usr/local/include并删除任何节点和node_modules目录如果使用brew安装节点进行安装,则在终端中运行brew卸载节点检查主目录中是否有任何本地或lib或include文件夹,并从中删除任何节点或node_module转到/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修改$HOME/.bashrc中的PATH变量,该变量必须手动还原。

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

在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

从官方网站下载node的LTS版本

双击node-v16.13.1.pkg安装包,然后使用默认设置继续在终端中键入node-v以打印当前安装的node:v16.13.1和npm-v版本,以打印计算机上安装的当前npm版本:8.1.2

我在一个有很多依赖Windows的角度项目上工作,运行的是Node 14.17.0。突然,我升级到Node最新版本16.4.2,并开始出现冲突。

我决定降级,而不是一直使用传统的对等dep。

从控制面板卸载的节点只需使用安装程序再次安装节点14

一切都好了。

Docker-替代方法

Docker是一种超级快速的虚拟机,可以用来运行node等工具(而不是直接安装在macos上)。这样做的优点如下

所有内容(“millions”节点文件)都安装在docker映像/容器中(它们封装在几个内部docker文件中)您可以将带有项目的mac目录映射到docker容器,并可以访问节点,但在docker之外,macos系统甚至不知道节点已安装。因此,您可以获得某种带有可用节点命令的“虚拟”控制台,这些命令可以在真实文件上运行您可以通过docker ps查找节点并通过docker rm-f nameornum查找节点,从而轻松地杀死节点您可以通过一个命令dockerrmi轻松卸载dockerimage/容器。。。并获得可用空间-然后通过运行脚本再次安装(如下)您的节点封装在docker中,不能访问整个系统-只能访问映射到它的文件夹您可以运行节点服务,轻松地将其端口映射到mac端口,并可以从web浏览器访问它可以同时运行多个节点版本以类似的方式,您可以在docker内部安装其他工具,如php、数据库、redis等,而无需与macos进行任何交互(它们根本没有注意到此类软件)。例如,您可以同时运行3个不同版本的mysqldb和3个不同php版本的php应用程序…-所以你可以有很多工具,但系统干净团队工作:这样的环境可以很容易地克隆到其他机器上(甚至可以克隆到windows/linux系统上-经过一些修改),并提供相同的docker级环境-因此您可以轻松地设置和重用脚本/dockerfile,并以非常快速的方式为新的团队成员设置环境(他只需要安装docker并创建类似的文件夹结构并获取脚本副本即可)。我以这种方式工作了2年,和我的团队一起工作,我们非常高兴

指示

使用以下说明安装docker为工作准备“特殊”目录,例如我的目录是/Users/kamil/work(我将进一步使用这个目录,但它可以是任意的)-这个目录将是docker容器和mac文件ststem之间的“接口”。在此目录中创建以下目录结构:/Users/kamil/work/code-在这里,您可以将项目与代码放在一起/用户/卡米尔/工作/工具/Users/kamil/work/tools/docker数据-这里我们映射容器输出数据,如日志(或数据库文件,如果有人使用db等)/用户/卡米尔/工作/工具/码头工人/Users/kamil/work/tools/docker/node cmd-这里我们放置docker-node脚本工具内部创建文件.env,该文件将在一个位置包含其他脚本中使用的全局路径toolspath=“/Users/kamil/work/tools”codepath=“/Users/kamil/work/code”工作路径=/Users/kamil/work内侧方向/node cmd创建包含以下内容的文件dockerfile#默认/var/www/html(映射到带有项目的…/code文件夹)FROM节点WORKDIR/工作#其他任意工具(ng、gulf、bower)RUN npm install-g n@angular/cli bower gulf grutCMD为真;睡眠10000;完成#以下端口是任意的暴露3002 3003 3004 4200内侧方向/nodecmd创建包含以下内容的文件运行容器(该文件应可执行,例如通过chmod+x运行容器)-(注意我们如何将port-s和目录从外部“world”映射到内部docker文件系统)集合-ecd--“$(dirname”$0“)”#此脚本目录(双击时未设置)源../../。环境toolsdir=$toolspath/docker数据workdir=$workpath如果[!“$(docker ps|grep node cmd)”]然后docker build-t node cmd。docker rm-f节点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传真好了,现在您可以添加一些项目,例如work/code/myProject,并添加以下文件“run-cmd”(必须是可执行的)cd--“$(目录名“$0”)”../../tools/docker/node cmd/run containerdocker exec-it node cmd bash-c“cd/work/code/myProject;bash”然后,如果您运行上面的脚本(双击),您将在项目目录中看到带有可用节点命令的控制台,例如npm install要在后台运行项目(例如一些serwice),例如运行web服务器angular cli应用程序,可以使用以下脚本(名为run front-必须是可执行的)-(还必须编辑/etc/hosts文件以添加适当的域)cd--“$(目录名“$0”)”打开“http://my-angular.local:3002"../../tools/docker/node cmd/run containerdocker exec-it node cmd/bin/sh-c“cd/work/code/my angular project;npm start”cat#用于块脚本并等待用户ctrl+C