Henry Henry
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)

Henry

小学生中的前端大佬
  • JavaScript
  • TypeScript
  • Vue
  • ElementUI
  • React
  • HTML
  • CSS
  • 技术文档
  • GitHub 技巧
  • Nodejs
  • Chrome
  • VSCode
  • Other
  • Mac
  • Windows
  • Linux
  • Vim
  • VSCode
  • Chrome
  • iTerm
  • Mac
  • Obsidian
  • lazygit
  • Vim 技巧
  • 分类
  • 标签
  • 归档
  • 网站
  • 资源
  • Vue 资源
GitHub (opens new window)
  • Mac

    • macOS 上有哪些值得推荐的常用软件
    • Karabiner-Elements
    • Alfred
    • Mac 自定义应用程序快捷键
    • Mac 下搭建 Java 开发环境
    • Mac 常用快捷键
    • Mac 使用 技巧
    • Mac 终端软件安装利器 - Homebrew
    • MacTalk
    • iTerm2 用法与技巧
    • Mac 使用 Homebrew 安装 node
      • 安装 Homebrew
      • 卸载 node
        • homebrew 安装的
        • 官网下载 pkg 安装包的
        • 其他路子安装的
      • 安装 node
      • 安装指定版本的 node
      • 参考资料
    • Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器
    • 借助 Homebrew Cask, 教你快速下载安装 Mac App 新姿势
  • Windows

  • Linux

  • ShowyEdge
  • 开发效率提升之工具篇
  • 操作系统
  • Mac
Henry
2018-11-13
目录

Mac 使用 Homebrew 安装 node

最近 vue-cli 升级 3.0 了, 就想着尝试一下, 发现需要 Node.js 8.9 或更高版本 (推荐 8.11.0+), 而自己本地 node 需要升级. 这才想起来当初是在官网下载的 pkg 版本安装的, 这个怎么升级? Windows 的话覆盖安装就可以了, 这个可以吗? 网上查了一下, 大部分都推荐使用 n 这个包来升级 node. 突然想到可以试试 Homebrew, 以前一直听人说这个管理软件非常棒, 正好趁着升级 node 搞一下

# 安装 Homebrew

既然现在电脑上已经有 node 了, 那下一步肯定是先卸载之了

# 卸载 node

# homebrew 安装的

直接一条命令

brew uninstall node

# 官网下载 pkg 安装包的

一条命令

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

# 其他路子安装的

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

sudo rm -rf /usr/local/lib/node \

    /usr/local/lib/node_modules \

    /var/db/receipts/org.nodejs.*
1
2
3
4
5
6
7

Tips:

这些东西删完了, node 就算删除了.

但是还有好多基于 node 安装的一堆软件和命令行工具, 也需要重新安装, 例如 react-native, supervisor, pm2 etc

需要删除 /usr/local/bin 下面相关的文件, 其实它们只是些软连接, 正主都在 /usr/local/lib/node_modules/ 目录下.

在之前的步骤中, 已经被删除了, 但是按 tab 键还能找到, 就是因为这些软连接还存在

# 安装 node

brew install node

安装后有可能在终端中输入 node 找不到该命令, 执行如下命令

brew link node

得到如下结果

Linking /usr/local/Cellar/node/11.3.0...
Error: Could not symlink include/node/common.gypi
Target /usr/local/include/node/common.gypi
already exists. You may want to remove it:
  rm '/usr/local/include/node/common.gypi'

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
localhost:wkdir meng$ brew link --overwrite node
Linking /usr/local/Cellar/node/11.3.0...
Error: Could not symlink include/node/common.gypi
/usr/local/include/node is not writable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

上面错误指出有一些文件已经存在, 如果 link node 会冲突, 需要你去删除这些文件

执行 brew link --overwrite node 会强制链接并覆盖所有冲突文件

执行 brew link --overwrite --dry-run node 会列出所有将被删除的文件

我们可以先执行一下 brew link --overwrite --dry-run node 看看需要删除哪些文件

Would remove:
/usr/local/include/node/common.gypi
/usr/local/include/node/config.gypi
/usr/local/include/node/libplatform/libplatform-export.h
/usr/local/include/node/libplatform/libplatform.h
/usr/local/include/node/libplatform/v8-tracing.h
/usr/local/include/node/node.h
..........
# 由于需要删除的文件太多, 就不都列出来了
1
2
3
4
5
6
7
8
9

此时你可以选择手动依次找到这些文件并删除之(过来人告诉你贼拉麻烦)或者执行 brew link --overwrite node 强制覆盖冲突文件

删除上面的冲突的文件再运行

brew link node

直到没有以下类似错误出现为止

Target /usr/local/***
already exists. You may want to remove it:
  rm '/usr/local/***'
1
2
3

但可能还有以下的错误:

  1. 报错一:

    Linking /usr/local/Cellar/node/11.3.0... 
    Error: Could not symlink share/doc/node/gdbinit
    /usr/local/share/doc/node is not writable.
    
    1
    2
    3

    解决方案:

    sudo chown -R $(whoami) /usr/local/share

  2. 报错二:

    Linking /usr/local/Cellar/node/11.3.0... 
    Error: Could not symlink lib/dtrace/node.d
    /usr/local/lib/dtrace is not writable.
    
    1
    2
    3

    解决方案:

    sudo chown -R $(whoami) /usr/local/lib/dtrace

# 安装指定版本的 node

mac 环境下, 使用 homebrew 安装的 node, 默认是最高版本

那么使用 homebrew 如何安装指定版本的 node 呢?

  1. 如果之前使用 brew install node 安装过 node, 需要先执行 brew unlink node 来'解绑' node
  2. 查找可用的 node 版本 brew search node
  3. 安装你需要的版本, 比如 brew install node@8
  4. 然后 brew link node@8 , 这一步可能会报错, 按照提示执行命令就 ok 了, 比如我最后执行的是 brew link --overwrite --force node@8 . 还遇到过在 ~/.zshrc 中添加环境变量: export PATH="/usr/local/opt/node@8/bin:$PATH"
  5. node -v 不出意外, 就安装好了你想要的 node 版本

好了, 关于 node 和 brew 本人目前就踩坑这么多了, 如有不足之处还望不吝赐教

# 参考资料

  • Mac 下彻底卸载 node 和 npm - Room - CSDN 博客 (opens new window)
  • Mac 卸载 node 并使用 brew 重新安装 - 简书 (opens new window)
  • brew link node 失败 - xinghuowuzhao 的博客 - CSDN 博客 (opens new window)
  • homebrew 安装指定版本 node - 简书 (opens new window)
编辑 (opens new window)
#Homebrew
上次更新: 5/27/2023, 1:02:05 PM
iTerm2 用法与技巧
Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器

← iTerm2 用法与技巧 Mac 使用 VS Code 配合 Remote Development 插件连接 Windows 远程服务器→

最近更新
01
version 1.15
07-01
02
version 1.14
06-27
03
version 1.13
06-27
更多文章>
Theme by Vdoing | Copyright © 2017-2023 HenryTSZ | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式