即使我安装了 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 安装库,以便我可以处理项目。
我尝试使用 BREW 在 NVM 之前使用 brew update
和 brew install node
进行更新。我尝试删除 /usr/local/include
中的“node”目录以及 /usr/local/lib
中的“node”和“node_modules”。我已尝试卸载 npm 并按照 these 说明重新安装它。
所有这一切都是因为我试图更新旧版本的节点来安装“zipstream”库。现在我的用户目录中有文件夹,并且节点版本仍然不是最新的,即使 NVM 说它使用的是 0.6.19。
理想情况下,我想卸载 nodejs、npm 和 nvm,然后在我的系统上从头开始重新安装整个东西。
显然,有一个 /Users/myusername/local
文件夹包含一个带有 node
的 include
和带有 node
和 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 install node 安装,然后在终端中运行 brew uninstall node 检查您的主目录任何本地或 lib 或包含文件夹,并从那里删除任何节点或 node_modules 转到 /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 变量,该变量必须为 reverted manually。
然后下载 nvm 并按照说明安装节点。我相信最新版本的 node 带有 npm,但您也可以重新安装它。
对于 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 在您在具有不同节点依赖项的不同项目之间跳转时自动切换版本。
--force
标志运行 brew 以确保删除所有版本的节点:$ brew uninstall --force node
running brew uninstall --force node
&& 之后brew cleanup
、node --version
和 npm version
仍在返回一个版本
我知道这篇文章有点过时了,但只是想分享在删除 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.*
更新:2016 年 9 月 23 日
如果您害怕运行这些命令...
感谢 jguix 的 this 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 及更高版本
要点评论来源: 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.*
org.nodejs.node.pkg.bom
而不是 org.nodejs.pkg.bom
。
udo..
开头,然后在运行之前添加 s
。
/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
在 Mavericks 上,我从节点 pkg(来自 nodejs 站点)安装它,然后将其卸载,以便可以使用 brew 重新安装。我只在终端中运行 4 个命令:
sudo rm -rf /usr/local/lib/node_modules/npm/ brew uninstall node brew doctor brew cleanup --prune-prefix
如果还有node安装,重复第2步。毕竟ok,我用brew install node
安装
brew link
步骤未成功完成
->brew prune Error: Calling 'brew prune' is disabled! Use 'brew cleanup --prune-prefix' instead.
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提供。
我已经总结了现有的答案,并确保 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/
。如果我打算重新安装节点,我可以删除它们还是应该保留它们?
brew uninstall node
- 如果您通过附加 @<vernum>
安装了显式节点版本,那么您还必须使用相同的标识符卸载它们,单独的 node
不会覆盖它们
brew cleanup
(有和没有 --prune-prefix
参数)几次,brew doctor
总是一遍又一遍地找到相同的剩菜
第一:lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom |读 f;做 sudo rm /usr/local/${f}; done sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.* 回顾一下,最好的方法(我发现)完全卸载 node + npm 是执行以下操作: 转到 /usr/local/lib 并删除任何节点和 node_modules cd /usr/local/lib sudo rm -rf node* 转到 /usr/local/include 并删除任何节点和 node_modules 目录 cd /usr/local/include sudo rm -rf node* 如果您使用 brew install 节点安装,则在终端运行 brew uninstall node brew uninstall node 检查您的主目录是否有任何“本地”或“lib”或“include”文件夹,并从那里删除任何“节点”或“node_modules”转到 /usr/local/bin 并删除任何节点可执行文件 cd /usr/local/bin sudo rm -rf /usr/local/bin/npm ls -las 你可能需要还要执行附加说明: 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*
并不是一种特别安全的方法。可能还有其他带有该前缀的二进制文件。
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.
请帮助
将节点降级到 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
我不确定是因为我有旧版本(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。
在 macOS Big Sur 版本 11.2.3 (20D91) 上完全卸载 Nodejs
介绍
我的系统正在运行 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 的 answer 中提到的 @AhteshamShah 的问题:
当触发第一个命令时:无法打开/var/db/receipts/org.nodejs.pkg.bom:没有这样的文件或目录**** 无法打开/var/db/receipts/org.nodejs.pkg .bom。 – Ahtesham Shah 2019 年 6 月 20 日在 5:09
我深入研究了 @JohelAlvarez 链接的 the original post,阅读了所有评论,并从 @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 |读 f;做 sudo rm /usr/local/${f}; done 与 org.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/ && ls -la
时检查这一点。
从Nodejs官网安装解决方案
使用您首选的终端,从您的系统中完全卸载 Nodejs,如下所示:
选项1
lsbom -f -l -s -pf /var/db/receipts/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/receipts/org.nodejs.*
选项 2
转到 /var/db/receipts/
并删除任何 org.nodejs.*
cd /var/db/receipts/ && ls -la sudo rm -rf org.nodejs.*
转到 /usr/local/lib
并删除任何 node
和 node_modules
cd /usr/local/lib && ls -la sudo rm -rf 节点*
转到 /usr/local/include
并删除任何 node
和 node_modules
目录
cd /usr/local/include && ls -la sudo rm -rf node*
检查您的 $HOME
目录中是否有任何“local”或“lib”或“include”文件夹,并从那里删除任何“node”或“node_modules”。
转到 /usr/local/bin
并删除任何节点可执行文件
cd /usr/local/bin && ls -la sudo rm -rf /usr/local/bin/npm sudo rm -rf /usr/local/bin/node
您可能也需要这样做:
sudo rm -rf /usr/local/share/man/man1/node.1 sudo rm -rf /usr/local/lib/dtrace/node.d sudo rm -rf ~/.npm
之后,您可以使用 which node
检查系统中是否还有 node
或查找系统中节点的所有出现。
提示
使用 find / -name 'node' | 搜索节点文件的位置sed -E 's|/[^/]+$||' |sort -u 在运行其他人共享的代码之前,检查你的目录,确保你写的文件名是正确的。
./usr/local
前缀。因此,“选项 1”中的 rm
命令不需要为该版本添加该前缀。
从 /usr/local/lib 前代码中删除节点和/或 node_modules: 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
/usr/local/opt/
中删除 node@6
后
brew uninstall node
我必须知道哪个节点
which node
然后删除它
rm -rf /usr/local/bin/node
在 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
include
文件夹为空
npm install -g any-package-name
全局安装任何东西时,您会收到 EACCES: permission denied
错误。官方文档(docs.npmjs.com/downloading-and-installing-node-js-and-npm)强烈建议使用 Node 版本管理器来安装 Node.js 和 npm。
为我工作。
$node --version
v11.1.0
$nvm deactivate
$nvm uninstall v11.1.0
nvm
。
卸载 NodeJS 的步骤:
对于带有 M1 芯片的 MacOS Monterey,请按照以下链接从系统中完全卸载 node。我尝试了多种方法,但这个方法终于奏效了。
Uninstall NodeJS & NPM from Mac M1 Monterey
此外,请在最后执行以下命令以从 bin 文件夹中删除节点相关目录。
sudo rm -R node-sass
sudo rm -R npm
sudo rm -R npx
要验证该节点是否已删除:
node --version
它应该说找不到命令。
安装 NodeJS 的步骤:
使用 M1 芯片在 Mac 上启用 Rosseta 终端。 How to enable Rosseta terminal
使用 nvm (Node Version Manager) 在你的机器上安装 NodeJS。为什么是非虚拟机??因为您可以运行多个版本的 NodeJS(您可以使用新应用程序以及旧版应用程序)。
How to install multiple versions of NodeJS using nvm
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
如果您已经安装了 nvm,则执行以下命令
nvm deactivate - 这将从 $PATH 中删除 /.nvm/*/bin
nvm list - 列出系统中安装的所有节点版本
nvm uninstall
使用 nvm
安装节点并使用 nvm
而不是 brew
卸载总是一件好事。
这个解决方案对我有用。
附加命令
哪个节点知道系统中安装的节点的路径。您可以 rm 此目录手动卸载节点。然后您可能需要相应地调整 PATH 文件。
在 Dominic Tancredi's awesome answer 上进行扩展,我将它整合到一个 bash 包和独立脚本中。如果您已经在使用名为 bpkg 的“Back Package Manager”,您可以通过运行以下命令来安装脚本:
bpkg install -g brock/node-reinstall
或者您可以查看 Github 上 brock/node-reinstall 上的脚本。该脚本允许您使用 nvm 或 nave 重新安装节点,并将节点版本指定为默认值。
node-reinstall
脚本包含这一行: sudo rm -rf $HOME/{local,lib,include,node*,npm,.npm*}
因此,如果您碰巧在您的 $HOME
中独立拥有该名称的目录(就像我一样),它将被破坏!
除了主要答案之外,我还需要删除在以下位置找到的所有 npm 实例:
rm -rf /usr/local/share/man/man1/npm*
也许你需要做
hash -r
它有助于解决符号链接的问题
$ node -v
$ bash: /opt/local/bin/node: No such file or directory
在我的 Mac 上卸载 Node.js 时,我遇到了一个问题。我有一些奇怪的行为,比如 npm
仍然存在,即使在不得不将它全部删除之后。
这是因为我使用 macport 完成了旧安装。所以你还必须使用端口卸载它:
sudo port uninstall nodejs
它可能安装了许多不同版本的 Node.js,因此将它们全部卸载(一个一个)。
我从 git 存储库下载的源代码安装了 Node.js。我安装了:
./configure
$ make
$ sudo make install
因为make文件支持它,我可以这样做:
$ sudo make uninstall
作为解释通过自制软件进行清理和安装的答案的伴侣,我发现自制软件本身提供了符号链接冲突的明确指示。
不幸的是,它会在遇到它们时一一提供这些,因此有点费力,但它似乎确实找到了所有冲突,并且是我可以使用自制软件进行全新安装的唯一方法。
本质上,该过程是:
使用 homebrew 卸载 node
https://i.stack.imgur.com/498rO.jpg
这是我安装最后一步的屏幕输出 - 您可以看到它导致全新安装(最终......):
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
首先,您需要在安装新的节点版本后停用节点:(mac)。
nvm deactivate
这已从 $PATH 中删除 /Users/user_name/.nvm/*/bin
在该节点更新后
node --version
v10.9.0
Docker - 替代方法
Docker 是一种超快的虚拟机,可以用来运行 node 等工具(而不是直接安装在 mac-os 上)。这样做的好处如下
所有东西('milions'节点文件)都安装在 docker image/container 中(它们封装在几个内部 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
为工作准备“特殊”目录,例如我的目录是 /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 节点脚本
在工具内部创建文件 .env ,它将在一个地方包含在其他脚本中使用的全局路径 toolspath="/Users/kamil/work/tools" codepath="/Users/kamil/work/code" workpath=/Users/kamil/工作
innside dir ../node-cmd create file dockerfile with following content # default /var/www/html (mapped to .../code folder with projects) FROM node WORKDIR /work #其他任意工具(ng,gulp,bower)运行 npm install -gn @angular/cli bower gulp grunt CMD 而为真;睡10000; done # 下面的端口是任意的 EXPOSE 3002 3003 3004 4200
innside dir ../node-cmd 创建具有以下内容的文件运行容器(该文件应该是可执行的,例如通过 chmod +x 运行容器) - (注意我们如何将端口和目录从外部“世界”映射到内部 docker filesystem) set -e cd -- "$(dirname "$0")" # 此脚本目录(双击时未设置) source ../../.env toolsdir=$toolspath/docker-data workdir=$workpath if [ ! "$(docker ps | grep node-cmd)" ] 然后 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 # 用于块脚本并等待用户 ctrl+C
就我而言,其他答案均无效,因为我之前已降级到 node8。因此,不是在上面做,而是对我有用:
which node
返回 /usr/local/bin/node@8
而不是 /usr/local/bin/node
所以我执行了这个命令:
brew uninstall node@8
它工作,然后从官方网站下载最新的 pkg 并安装。之后我不得不关闭我的终端并重新开始访问新版本
如果您无法找到节点,只需运行 whereis node
和 whereis npm
和 whereis nvm
,您可以根据需要删除列出的目录。
您还需要完全关闭终端并重新打开它才能使更改生效。
这为我修复了它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 包。
brew install node
没有 --without-npm
选项。
@lfender6445 answer 对我来说很好卸载
现在要重新安装,我在安装最后一个版本而不是最稳定的版本时遇到问题,因此要安装特定的节点版本,您应该这样做:
brew install node@10 // 10 is the version I want
brew link node@10
rm -rf /Users/[homedir]/.npm
。/Users/[homedir]/.nvm
brew doctor
,然后运行了brew prune
来清理 NPM 的一堆损坏的符号链接。sudo rm -rf ~/.node-gyp
。在我切换到 brew 之前,我已经用 MacPorts 添加了它。