main.jsbundle does not exist. this must be a bug with.

409 阅读2分钟

第一:是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 $PATH environment variable, which was set to /opt/homebrew/bin for 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安装症状!(谢谢)。

截屏2023-09-15 14.58.58.png

第二:保证Xcode所使用node的正确地址

截屏2023-09-15 14.58.19.png

基本按照如上方法可快速解决问题,还是没有解决的清理一下缓存,重启一下电脑,基本就解决了,还是没有解决的,恭喜你,可能跟我一样遇到一个坑比问题了。你不小心装的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

截屏2023-09-15 16.36.01.png

参考链接:

# M1 运行 react-native 项目遇到的问题

# 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的需求

- 第二种可能导致原有依赖命令失效,不推荐使用

所以第一种和第三种方式效果相当,第二种可能存在兼容性问题。