mac错误gyp: No Xcode or CLT version detected!
运行npx create-react-app part1
的过程中出现:
gyp: No Xcode or CLT version detected!
这个错误
虽然最后也提示了安装成功
参考:
- 知乎文章:gyp: No Xcode or CLT version detected!
- Stack Overflow问题:
npm install
fails on node-gyp rebuild withgyp: No Xcode or CLT version detected!
大概知道这个东西是macos升级后导致的,
# 先执行
xcode-select --install
# 显示以下内容
xcode-select: error: command line tools are already installed,
use "Software Update" to install updates
# 说明电脑上一已经安装过这个东西了
# 执行
xcode-select --print-path
# 显示
/Library/Developer/CommandLineTools
# 为了验证解决方式有没有起作用,先卸载create-react-app再重新安装
npm uninstall -g create-react-app
# 注意,-g表示的是--global 全局,有时候加了这个参数会提示没有权限
npm install -g create-react-app
# 这个命令就会报错没有权限
# 所以简单起见,还是用这个
npx create-react-app part1
# 无效
sudo xcode-select --reset
# 无效(我电脑默认的路径就是switch后面那个)
$ xcode-select --print-path
/Applications/Xcode.app/Contents/Developer
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
...
$ sudo xcode-select --reset
- 最权威的解决方案应该来自,node-gyp的github的文档:Is this an Issue with MACOS catalina? #1927。推荐的文档:https://github.com/nodejs/node-gyp/blob/master/macOS_Catalina.md
mac完全卸载node
这东西感觉很占空间,我有强迫症,删了,参考:
Mac nodejs卸载、安装:
sudo npm uninstall npm -g
sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*
sudo rm -rf /usr/local/include/node /Users/$USER/.npm
sudo rm /usr/local/bin/node
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
node -v
// -bash: /usr/local/bin/node: No such file or directory
npm -v
// -bash: /usr/local/bin/npm: No such file or directory
另外,由于不确定上面这个博主系统的版本,所以另外找了:How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)
sudo rm -rf /usr/local/{
lib/node{
,/.npm,_modules},bin,share/man}/{
npm*,node*,man1/node*}
还参考了:How to Uninstall Node.js from Mac OSX
逐步检查:
- 删除
/usr/local/lib
路径中的node
和node_modules
- 删除
/usr/local/include
路径中的node
和node_modules
- 删除
/usr/local/bin
路径中的node
,node-debug
和node-gyp
- 从根目录(home目录)删除
.npmrc
和.npm
,.node-gyp
,.node_repl_history
, - 删除
/usr/local/share/man/man1/
路径中的node*
,npm*
- 删除
/usr/local/lib/dtrace/
路径中的node.d
- 删除
/opt/local/bin/
中的node
- 删除
/opt/local/include/
中的node
- 删除
/opt/local/lib/
中的node_modules
- 删除
/usr/local/share/doc/
中的node
- 删除
/usr/local/share/systemtap/tapset/
中的node.stp
参考:
- Stack Overflow:/usr/local/bin No such file or directory
- /usr/local doesn’t exist in fresh install Yosemite
可知:/usr/local/
这个文件夹在macos中不是自带的,需要自己创建,那就不用删了。