第一:是node版本太高,网上基本的解决方法是降到nodev17以下。node16及16以下没有openssl参数,node16以上有openssl的参数。(所以前者不需要export NODE_OPTIONS=--openssl-legacy-provider,高版本node需要export NODE_OPTIONS=--openssl-legacy-provider)
I found the issue on my end. It was because of my
$PATHenvironment variable, which was set to/opt/homebrew/binfor zsh, but not configured for/bin/sh. This path is used by the metro bundler to identify the presence of watchman; that's why the reported error was symptomatic of a missing watchman install! (thanks @safaiyeh ). 我发现问题出在我这边。这是因为我的$PATH环境变量,它被设置为/opt/homebrew/bin为zsh,但没有配置为/bin/sh。此路径由地铁捆绑器使用以识别看守员的存在;这就是为什么报告的错误是一个失踪的watchman安装症状!(谢谢)。
第二:保证Xcode所使用node的正确地址
基本按照如上方法可快速解决问题,还是没有解决的清理一下缓存,重启一下电脑,基本就解决了,还是没有解决的,恭喜你,可能跟我一样遇到一个坑比问题了。你不小心装的node版本是16.20.2,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
m1 mac homebrew下的16.20.2有问题,需要加export NODE_OPTIONS=--openssl-legacy-provider,n管理工具下的node16.20.2不用加,作者也不管了。
我的node版本:v20.6.1
inkcrazy@localhost ~ % node -v
v20.6.1
参考链接:
# RN 0.63.4 main.jsbundle does not exist. This must be a bug with' #31094
# node@16 has breaking changes with openssl@3 #135987
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/bin"
export PATH="$PATH:/opt/homebrew/bin"
这三个有区别吗?
这三条export PATH命令的差异:
1. export PATH="/opt/homebrew/bin:$PATH"
表示将/opt/homebrew/bin放在PATH的最前面,其他原有的PATH目录会继续存在。
2. export PATH="/opt/homebrew/bin"
只保留/opt/homebrew/bin这个路径,清除原有的PATH。
3. export PATH="$PATH:/opt/homebrew/bin"
将/opt/homebrew/bin追加到原有PATH最后,原有PATH路径会保留。
区别在于:
- 第一种方法是将homebrew路径加入到最前面,但不会清除其他路径。
- 第二种方法只保留homebrew路径,清除原PATH。
- 第三种方法是追加homebrew路径,但不改变原PATH顺序。
所以实际效果:
1>homebrew路径优先,其他路径也存在
2>只有homebrew路径
3>homebrew路径最后,但原PATH全部保留
一般情况下:
- 第一种和第三种都可以满足加入homebrew到PATH的需求
- 第二种可能导致原有依赖命令失效,不推荐使用
所以第一种和第三种方式效果相当,第二种可能存在兼容性问题。