环境

MacOS 10.14.6,之前pkg安装的Node 10.x.x LTS

背景

之前使用Node官网的pkg文件安装过,想卸载后用brew安装,但是安装时报Warning或安装后npm不能使用

过程

1.使用 brew uninstall node 尝试卸载,显示卸载成功(但通过pkg安装的node的文件/文件夹所有人是root,brew无法删除,所以其实卸载并没有成功)

2.再使用 brew install node 时,出现以下警告

1
2
3
4
5
6
7
8
...
/usr/local/include/node is not writable.

You can try again using:
brew link node
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall node`
...

3.这时我们使用 brew docker ,找出这些文件,运行后显示如下

1
2
3
4
5
6
7
8
...
Unexpected header files:
/usr/local/include/node/ares.h
/usr/local/include/node/ares_version.h
/usr/local/include/node/libplatform/libplatform.h
/usr/local/include/node/nameser.h
/usr/local/include/node/node.h
...

4.使用sudo删除这些文件(或将这些文件所有人改为当前用户,这里我们选择删除)

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

注意:随着版本变化,需要删除的文件/文件夹可能发生变化,请对照 brew docker 的结果修改删除语句

注意2:不能仅删除/usr/local/lib/node_modules下的npm文件夹,否则可能导致虽然没有Unexpected header files了,但因为node_modules文件夹还是属于root,导致安装后npm不可用

5.这时再使用 brew install node 安装,Node和NPM应该就都可以使用啦。