RN问题解决
2024.6.14时最新版本为 0.74.2,2024.8.1时最新版本为0.74.4,但其相关依赖不太稳定,尝试使用 0.74.2 版本操作
创建项目时报错:RN error Error
RN error Error: getaddrinfo ENOENT raw.githubusercontent.com at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:108:26)
raw.githubusercontent.com 是 GitHub 提供的一个服务,用于直接访问存储在 GitHub 仓库中的原始文件(如文本文件、脚本等),而无需下载整个仓库。在 React Native (RN) 开发环境中,这个 URL 常见于以下几种场景(文心一言生成,可了解):
-
依赖管理工具安装: 如 Homebrew 安装脚本
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
,Homebrew 是一个 macOS 下的包管理器,广泛用于安装 RN 开发所需的工具链和依赖,比如 Node.js、watchman、Yarn 或者其他 CLI 工具。 -
脚本或配置文件获取: 在某些情况下,开发者可能会从 raw.githubusercontent.com 直接拉取脚本或配置文件到本地,作为项目初始化的一部分或者是运行某些自动化任务的需要。
-
快速分享和集成代码片段: 开发者可能会分享一些示例代码或者配置文件的链接,其他用户可以直接通过这些链接查看或下载内容,便于快速集成或参考。
-
持续集成/部署脚本: 在 CI/CD 流程中,可能会使用此类链接来动态获取最新的脚本或配置,确保构建过程使用的是最新或指定版本的资源。
其最显著的是我们在启动项目时,会自动将模拟器启动
问题分析
-
为无法访问该域名的问题
解决方案
-
检查网络设置
-
使用代理服务
-
更换 DNS 服务器等方法来解决访问限制
DNS 服务可能是 域名 与 ip 未绑定的原因
我们需要查看 C:\Windows\System32\drivers\etc里查看是否有
raw.githubusercontent.com 与其对应的 ip 绑定,没有的话我们需要去查看 raw.githubusercontent.com 所对应的 ip
-
进入该网址 https://www.ipaddress.com/,输入域名搜索
-
下图所框便是其对应的 ip
-
在C:\Windows\System32\drivers\etc 里的 hosts 里最下面写入对应的配置,保存后重新创建项目
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
下载 gradle-x.x-all.zip 太慢
Downloading https://services.gradle.org/distributions/gradle-8.6-all.zip
解决方案
-
配置镜像
-
在 [项目名]\android\gradle\wrapper\gradle-wrapper.properties 中进行如下操作
1 | distributionBase=GRADLE_USER_HOME |
配置好之后仍满可以试试多次重新执行启动项目命令,当进度明显快了就可以了,第一次可能有点慢,因为要安装 gradle-8.6-all.zip
依赖库下载太慢
解决方案
-
[项目名]\android\build.gradle 中 repositories 内有 google() 和 mavenCentral()
1 | repositories { |
-
google(): 这一行指定了Google的Maven仓库作为依赖项的来源。这对于下载Android SDK相关依赖、Jetpack库以及其他Google提供的库非常关键。
-
mavenCentral(): 这一行指定了Maven中央仓库,它是Java开发中最常用的依赖库仓库,包含了大量开源库和框架。
-
但由于这两个仓库的服务器都在国外,我们也需要对其进行镜像处理,有两种解决方案:
- 局部配置:直接在 build.gradle 的 repositories 中修改
- 全局配置: 在 C:\Users[用户名].gradle 文件夹下创建 init.gradle 文件,里面进行如下配置,这样我们就不需要每个项目都进行配置了
1 | // 局部配置 |
1 | // 全局配置 |
调试断开后设备上打开报错
当我们启动程序并连上设备后,我们可以看到页面资源,但当我们断开后再打开就会报错 Unable to load script…,是因为我们的 JS代码和静态资源 并没有集成到Android项目中进行构建和发布
解决方案
-
在 [项目名]\android\app\src\main\ 目录下创建 assets 文件夹,并在下面创建 index.android.bundle 文件
-
然后在控制台项目根目录运行命令 npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
-
当我们再次运行时,即使断开我们也可以看到我们的资源
error Error: connect ETIMEDOUT 185.199.108.133:443
过段时间重新尝试安装
error: unknown command ‘run-android’
依赖包删除重新 npm i
或 yarn