React-Nactive的踩坑记录

470 阅读3分钟

React-Native相关问题

在公司接受了一个RN项目,结果我配置环境陪了一天才配好,原项目是通过expo来多平台启动的项目,所以问题也许不通用,但我还是记录了一下我所遇到的问题,希望能对大家有所帮助。

环境配置:reactnative.dev/docs/enviro…

Q:Error: watchman: Failed to download resource "boost"

image.png

A:一般这种下载错误都是因为外网的原因,如果你有上网工具将会有显著的解决效果,或者可以查询是否有公司内部库或者其他国内源。

不过请注意,vscode一般不会走上网工具给浏览器的代理端口,意思是单单开启上网工具是没有用的,在mac系统下需要执行代理命令:

export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

当然不同的代理命令也许也不同,如果你和我使用同一款上网工具,那么你可以在菜单中找到一键式的代理命令

image.png

Q:Failed to build iOS project. "xcodebuild" exited with error code 65.

image.png A:参考下面的答案

Q:Couldn't start project on Android: Error running adb: The development client (com.linhuiba.pms) for this project is not installed. Please build and install the client on the device first.

image.png

A: 这个错误与上面的错误相同,需要到对应到构建工具中构建出应用,然后才可以直接在vscode中启用,因为vscode的启用会要打开到对应的客户端软件。下面分析一下ios与Android对应的构建问题。

Android构建:

Q:Plugin with id 'maven' not found

首先是JDK的版本问题,在构建环境的过程中默认是安装的JDK17,不过问题是项目中存在着一个名叫maven的插件,在最新的gradle中已经不再支持,所以我们需要使用6.7.1的版本。好的,这里问题来了,JDK17并不支持gradle7一下的版本,所以我们首先需要将JDK降级为11.0.1:

image.png 如果你幸运的没有遇见本文中的其他问题的话,那么在点击Sync Project with Gradle Files同步项目后,就可以成功的构建出项目了,此时再运行项目,我们的模拟器上就会安装上项目的客户端,以后就可以在vscode中使用yarn start的命令来直接启动了。

Q:A problem occurred evaluating settings 'pms-app'.

> Cannot run program "node" (in directory "/Users/lijingjie/工作区/pms-app/android"): error=2, No such file or directory转存失败,建议直接上传图片文件

image.png

A: mac M1需要在终端使用:

open -a /Applications/Android\ Studio.app

来开启 android studio,否则就会找不到node,即使你已经将node添加进了全局变量。

Q:Could not find compile target android-28 for modules :react-native-nodemediaclient

A:这是安卓sdk版本的问题,请在 "Preferences"(或 "Settings") -> "Appearance & Behavior" -> "System Settings" -> "Android SDK"中添加Android 9的sdk

image.png

Q:source file or directory not found: /Users/lijingjie/u5DE5u4F5Cu533A/pms-app/node_modules/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/launcher/DevLauncherClientHost.kt

A:这个问题相当简单却让我找了一个下午,在找遍所有论坛问过所有大模型无果后,我再一次凝视起了这个报错……等等!这跟在我用户名后面这一坨字符是什么东西?!我打开文件结构一看,看见父级大大的“工作区”三个大字,此刻我再一次意识到了程序员的良好素养是多么的重要:

不要使用带有中文的路径!

Q:安卓模拟器报错:版本不适配

image.png

A:根据提示我们可以知道,是项目的sdk版本与手机安装的expo go的版本不同。

解决方案有两种:

1、  重构项目,将sdk升级(一般不推荐)

2、  既然项目升级不了那么只有我们自己降降版本了,在模拟器开启的运行:

npx expo start

这样expo会自动帮助你安装合适的expo go版本。