You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:解决Expo Go应用空白白屏且无响应问题

Expo Go安卓端白屏无响应(次日启动触发)排查与解决

问题概述

跟着YouTube上JavaScript Mastery的《Build and Deploy a React Native App》教程开发时,第三次遇到安卓Expo Go启动后完全白屏、无法通过摇唤打开设置、应用无响应的问题。特征如下:

  • 前一天开发结束时应用运行正常,次日打开必现问题
  • VS Code无编译报错,打包流程正常完成
  • 已将react-native版本从0.73.2升级至0.73.4适配Expo 50.0.1,问题仍未解决
  • 曾通过重写项目解决过一次,但问题复发

排查步骤与解决方案

1. 清除Expo缓存(优先尝试)

这类跨天出现的问题大概率是缓存堆积导致:

  • 终端执行命令:expo r -c(重启开发服务器并清除所有缓存)
  • 安卓端操作:打开Expo Go,长按项目卡片选择「Remove from Recents」,再重新扫码加载项目

2. 修复字体加载容错逻辑(针对你的_layout.js)

当前代码中如果字体加载失败会直接返回null,导致完全白屏。修改_layout.js添加加载状态提示与错误处理:

import { Stack, View, Text } from "expo-router";
import { useCallback, useEffect } from "react";
import { useFonts } from "expo-font";
import * as SplashScreen from "expo-splash-screen";

SplashScreen.preventAutoHideAsync();

const Layout = () => {
  // 接收字体加载错误状态
  const [fontsLoaded, fontError] = useFonts({
    DMBold: require("../assets/fonts/DMSans-Bold.ttf"),
    DMMedium: require("../assets/fonts/DMSans-Medium.ttf"),
    DMRegular: require("../assets/fonts/DMSans-Regular.ttf"),
  });

  const onLayoutRootView = useCallback(async () => {
    if (fontsLoaded) {
      await SplashScreen.hideAsync();
    }
  }, [fontsLoaded]);

  // 处理字体加载失败的情况
  useEffect(() => {
    if (fontError) {
      console.error("字体加载失败:", fontError);
      // 强制隐藏闪屏,避免卡住
      SplashScreen.hideAsync();
    }
  }, [fontError]);

  // 字体加载中显示占位UI,而非返回null
  if (!fontsLoaded && !fontError) {
    return (
      <View style={{ flex: 1, justifyContent: "center", alignItems: "center" }}>
        <Text>加载中...</Text>
      </View>
    );
  }

  return <Stack onLayout={onLayoutRootView} />;
};

export default Layout;

同时检查:

  • 字体文件路径是否正确(../assets/fonts/需对应实际文件位置)
  • 文件名是否完全匹配(安卓系统对文件名大小写敏感)

3. 检查资源引用与路由配置

  • Welcome.jsx:确认../../../constants路径下的icons.search图片存在、格式为Expo支持的类型(png/jpg等);检查SIZES.small是否正确定义,未定义会导致样式报错引发白屏
  • 路由结构:确认项目根目录下存在app文件夹,_layout.js位于app内,Welcome.jsx的位置对应Expo Router的默认路由(如app/index.jsx)

4. 捕获隐性运行时错误

虽然VS Code无编译报错,仍可能存在运行时错误:

  • 执行expo start --clear重启服务器
  • 终端按d打开调试菜单,选择「Debug Remote JS」
  • Chrome会打开调试面板,查看Console标签页的错误信息(即使应用白屏,远程调试仍能捕获错误)

5. 检查设备网络状态

确保安卓手机与开发电脑在同一局域网内,Expo Go需与开发服务器建立稳定连接,网络波动可能导致加载失败

代码小修正(非核心但需注意)

Welcome.jsx中搜索框placeholder拼写错误:将What are you lookingfor?改为What are you looking for?

内容的提问来源于stack exchange,提问作者madbater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:33:22