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.*
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.
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
..........
# 由于需要删除的文件太多, 就不都列出来了
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/***'
2
3
但可能还有以下的错误:
报错一:
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
报错二:
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
呢?
- 如果之前使用
brew install node
安装过 node, 需要先执行brew unlink node
来'解绑' node - 查找可用的 node 版本
brew search node
- 安装你需要的版本, 比如
brew install node@8
- 然后
brew link node@8
, 这一步可能会报错, 按照提示执行命令就 ok 了, 比如我最后执行的是brew link --overwrite --force node@8
. 还遇到过在~/.zshrc
中添加环境变量:export PATH="/usr/local/opt/node@8/bin:$PATH"
node -v
不出意外, 就安装好了你想要的 node 版本
好了, 关于 node
和 brew
本人目前就踩坑这么多了, 如有不足之处还望不吝赐教
# 参考资料
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05