我在我的 React-Native 项目中遇到了一个问题,该项目之前运行良好,但突然停止工作。每当我使用命令时:
react-native run-android
我收到一个错误:
未找到 Android 项目。也许先运行 react-native android ?
我尝试运行:
react-native android
但它说:
无法识别的命令 'android' 运行 react-native --help 以查看所有可用命令的列表
尝试后:
D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native eject
返回的错误是:
扫描 D:\ProjectRoot\ReactNativeProjects\AwesomeProject\node_modules 中的符号链接文件夹 (48ms) 必须在 app.json 配置文件中定义应用名称才能定义项目名称。它不能包含任何空格或破折号。
这是 app.json 文件:
{
"expo": {
"name": "AwesomeProject",
"description": "A very interesting project.",
"slug": "AwesomeProject",
"privacy": "public",
"sdkVersion": "30.0.0",
"platforms": ["ios", "android"],
"ios": {
"supportsTablet": true
},
"android": {
"package": "com.project.first"
},
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
]
}
}
我提出了这个问题并回答了自己,因为我认为这会对面临类似问题的其他人有所帮助。由于终端中显示的错误并不准确,我费了很大劲才找出背后的真正原因。
要解决此问题,请升级 react-native 软件包。
转到项目根目录。通过键入:react-native upgrade 在命令提示符中升级 React 本机包。然后接受通过在命令提示符中键入 y(是)来更新所有文件。
参考:https://github.com/facebook/react-native/issues/9312
打开你的 React Native 项目根目录并找到 android -> app -> build -> intermediates -> signing_config -> debug -> out -> signing-config.json 。删除signing-config.json这个文件再试一次
或者
1)有时如果我们有旧版本的 react native 并且一些新安装的包不支持旧版本。然后你必须使用 react-native upgrade 命令更新 react native 项目。
完成将当前项目更新到新版本后,此错误应该得到解决。
我知道这是一个老问题,但这些解决方案中的任何一个都对我不起作用,也许还有其他人像我一样。我在 run-android
之前解决了运行此命令的问题
react-native eject
确保使用命令(非 expo)启动项目:
react-native init <your-project-name>
如果存在文件夹,请执行以下操作:
在最新版本的 react-native 中,当您尝试发出命令时会出现此建议:
react-native eject
扫描 D:\ProjectRoot\ReactNativeProjects\AwesomeProject\node_modules 中的符号链接文件夹 (48ms) 必须在 app.json 配置文件中定义应用名称才能定义项目名称。它不能包含任何空格或破折号。
现在,当您发出以下命令时:
D:\ProjectRoot\ReactNativeProjects\AwesomeProject>react-native upgrade
出现以下情况:
扫描 D:\ProjectRoot\ReactNativeProjects\AwesomeProject\node_modules 中的符号链接文件夹 (56ms) 您应该考虑使用基于 Git 的新升级工具。它通过自动解决大多数冲突使升级更容易。要使用它: - 回到旧版本的 React Native - 运行“npm install -g react-native-git-upgrade” - 运行“react-native-git-upgrade” 见 https://facebook.github.io /react-native/docs/upgrading.html “package.json”中的 react-native 版本与“node_modules”中安装的版本不匹配。尝试运行“npm install”来解决这个问题。中止。
在 Facebook react-native commands 建议中,有一个明确的解决方案。
这些命令检查当前版本以及是否需要更新。
另一种解决方案:
react-native: Command run-android
unrecognized. Maybe caused by npm install
另请参阅:
Solution to "Expo : cannot find a module LogReporter"
以管理员身份打开命令提示符并转到项目文件夹,运行 android(npx react-native run-android)
我确实喜欢这个......工作!
在 CMD 项目根目录中运行 react-native upgrade。如果您仍然遇到问题,请确保您在 package.json 中的依赖项 json 中有 react-native,如果仍然遇到问题,请添加它,使用 react-native -v 在 cmd 中获取 react native 的版本并检查是否cmd 和 package.json 中返回的值是一样的。使用 cmd 中返回的值更新 package.json
到这里我的问题解决了。
在 Windows 中以管理员身份运行终端对我来说是诀窍......其他解决方案不起作用。
我不得不重新设置我的 AndroidManifest.xml 的样式,因为我在某处有语法错误(我在某处有一个额外的“/”)。现在它已经修复了。非常小心你的语法......
删除文件:React Native 项目根目录并找到 android -> app -> build -> intermediates -> signing_config -> debug -> out -> signing-config.json 。
打开你的 React Native 项目根目录并找到 android -> app -> build -> intermediates -> signing_config -> debug -> out -> signing-config.json
删除文件并重试。
我们遇到了这个问题,因为来自 android 文件夹 gradlew 和 gradlew.bat(分别用于 UN*X、Windows 的 Gradle 启动脚本)中的文件以某种方式进入了全局 .gitignore 文件,因此没有出现在本地环境中。
实际运行 react-native upgrade 命令恢复这些文件,从而解决问题。
作为补充,在没有找到 react-native 命令的情况下,您应该安装 react-native CLI:
npm install -g react-native-cli
然后你可以按照上面人说的步骤。
更多详情:react-native: command not found
我今天遇到了这个问题,没有一个解决方案对我有用,所以我找到了另一个。
Badly Formatted AndroidManifest.xml 会导致这个问题,可能你今天和我一样设置了闪屏,没有正确格式化AndroidManifest
删除signing-config.json 下次再试react-native run-android
签名配置.json 文件路径:android -> 应用程序 -> 构建 -> 中间体 -> 签名配置 -> 调试 -> 输出 -> 签名配置.json
如果您通过以下方式开始您的项目
npm install -g create-react-native-app
create-react-native-app MyReactNative
npm install -g react-native-cli
npm start
在此之后,您可能会遇到上述问题所以解决方案是:
npm run eject
我正在使用 Android Studio(非博览会),这对我有用
react-native init <your-project-name>
我认为您可以检查的一件更简单的事情是,如果您之前以不同的用户角色运行项目,例如在 Windows 中,如果您之前以管理员角色运行 react-native run-android。
对我来说,“rm -rf android/app/build/”有效
使用“--verbose”运行您的命令。我收到无法读取文件的错误(在 android/app/build/generated/not_namespaced_r_class_sources/ 中)。我删除了这个文件夹,它工作
在这里,app.json 没有名称,但它有与 expo 相关的配置。所以只需在 app.json 中添加名称和显示名称字段。
app.json(前两行):
{
"name": "AwesomeProject",
"displayName": "Awesome Project",
"expo": {
"name": "AwesomeProject",
"description": "A very interesting project.",
"slug": "AwesomeProject",
"privacy": "public",
"sdkVersion": "30.0.0",
"platforms": ["ios", "android"],
"ios": {
"supportsTablet": true
},
"android": {
"package": "com.project.first"
},
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": [
"**/*"
]
}
}
在此之后,只需运行:
$ 反应原生弹出
info 生成 iOS 文件夹。
info 生成 Android 文件夹。
无需进行本机升级。
您必须以管理员权限运行您的 cmd。这为我解决了同样的问题。没有做“弹出”或其他任何事情。
就我而言,我忘记添加 Sudo。固定如下,
sudo npx react-native run-android
删除 react native android build folder
然后重试命令 npx react-native run-android
就我而言,我的项目文件夹没有正确的权限。
如果是这种情况,只需单击文件夹上的右键 > 属性 > 安全 > 高级,然后将文件夹的所有权更改为您的用户,包括子文件夹。应该这样做
此错误仅表示您的项目根目录中没有“android”和“ios”文件夹。他们的位置很重要。
解决方案:-
打开您的项目文件夹搜索“android”和iso“文件夹”,将这些文件夹移动到项目的根文件夹中,然后使用 react-native run-android 启动项目
https://i.stack.imgur.com/fg8Cw.png
所以如果有人在这里遇到这个问题对我有用,
{
"name": "ZedMusic",
"displayName": "zedmusic",
"expo": {}
}
项目名称必须在 expo 之外,然后运行 npx react-nativeject
我的工作解决方案如下,以上都不适合我:
将 CD 放入您的项目文件夹并键入 expo start --android。
或者很长的路:
在 Android Studio 中打开 AVD 管理器并运行虚拟设备(您可以在之后关闭 AS)CMD 进入您的项目文件夹并输入“expo start” 一旦 Expo 开始,选择选项 2,即“Press a for Android emulator”
它将在虚拟设备上安装 expo,您可以从那里进行测试
当我运行 react-native eject
时,我得到了这个错误:
Both the iOS and Android folders already exist! Please delete `ios` and/or `android` before ejecting.
删除 MyProject/android 文件夹。
运行 react-native 弹出 这生成了 android 文件夹
然后运行 react-native run-android 构建android
您应该考虑使用基于 Git 的新升级工具。它通过自动解决大多数冲突使升级更容易。要使用它: - 回到旧版本的 React Native - 运行“npm install -g react-native-git-upgrade” - 运行“react-native-git-upgrade” 请参阅 https://facebook.github.io/react-native/docs/upgrading.html
如果您使用 expo
命令创建了项目,例如 expo init projectname
,那么之后您必须弹出项目:
expo eject
如果您通过 react-native init projectName
创建了您的项目,那么您必须使用
react-native eject
可能为时已晚,我从备份文件中替换了 Android
文件夹。它对我有用。