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

React Native Expo启动后PayloadTooLargeError问题求助

问题排查:Expo启动后iPhone端PayloadTooLargeError及异常代码执行/无限循环问题

报错日志

Android Running app on sdk_gphone_x86
Sentry Logger [log]: Unhandled promise rejections will be caught by Sentry.
Sentry Logger [log]: Integration installed: ReactNativeErrorHandlers
Sentry Logger [log]: Integration installed: Release
Sentry Logger [log]: Integration installed: InboundFilters
Sentry Logger [log]: Integration installed: FunctionToString
Sentry Logger [log]: Integration installed: Breadcrumbs
Sentry Logger [log]: Integration installed: LinkedErrors
Sentry Logger [log]: Integration installed: Dedupe
Sentry Logger [log]: Integration installed: HttpContext
Sentry Logger [log]: Integration installed: EventOrigin
Sentry Logger [log]: Integration installed: SdkInfo
Sentry Logger [log]: Integration installed: DebugSymbolicator
Sentry Logger [log]: Integration installed: RewriteFrames
Sentry Logger [log]: Integration installed: ExpoManagedIntegration
device
false
PayloadTooLargeError: request entity too large
    at readStream (C:\Users\hassn\AppData\Roaming\npm\node_modules\expo-cli\node_modules\raw-body\index.js:155:17)
    at getRawBody (C:\Users\hassn\AppData\Roaming\npm\node_modules\expo-cli\node_modules\raw-body\index.js:108:12)
    at read (C:\Users\hassn\AppData\Roaming\npm\node_modules\expo-cli\node_modules\body-parser\lib\read.js:77:3)
    at jsonParser (C:\Users\hassn\AppData\Roaming\npm\node_modules\expo-cli\node_modules\body-parser\lib\types\json.js:135:5)  
    at call (D:\personal\teleMed-master\node_modules\connect\index.js:239:7)
    at next (D:\personal\teleMed-master\node_modules\connect\index.js:183:5)
    at remoteDevtoolsCorsMiddleware (C:\Users\hassn\AppData\Roaming\npm\node_modules\expo-cli\node_modules\@expo\dev-server\src\middleware\remoteDevtoolsCorsMiddleware.ts:31:3)
    at call (D:\personal\teleMed-master\node_modules\connect\index.js:239:7)
    at next (D:\personal\teleMed-master\node_modules\connect\index.js:183:5)
    at serveStatic (D:\personal\teleMed-master\node_modules\serve-static\index.js:75:16)

问题描述

执行expo start后,在iPhone上运行应用时触发PayloadTooLargeError: request entity too large错误,同时出现两个异常:已注释的代码被执行、应用陷入无限循环,无法自行解决。

排查与解决方案

1. 解决PayloadTooLargeError核心问题

该错误是Expo开发服务器默认请求体大小限制不足导致的,可通过以下方式调整:

  • 临时启动方案:执行命令时指定更大的请求体限制
    expo start --max-http-body-size 50mb
    
  • 持久化配置:在项目根目录创建/修改expo.config.js,添加服务器配置
    module.exports = {
      // 保留原有配置
      server: {
        maxHttpBodySize: '50mb'
      }
    };
    

2. 排查已注释代码被执行的问题

  • 检查注释格式:确认没有嵌套注释(/* */内不能再包含/* */),单行注释//后的代码是否被误纳入同一逻辑块
  • 清理缓存:执行expo start --clear清除Expo缓存,避免旧代码残留
  • 检查打包配置:确认babel、metro等工具的注释处理插件配置正常,未出现错误解析

3. 排查无限循环问题

  • 定位触发点:在疑似循环的代码块添加console.log标记,或通过Expo开发者菜单开启远程调试,用Chrome DevTools打断点追踪调用栈
  • 检查状态更新:确认React组件中useState/useReducer的更新未在渲染函数中触发,避免无限重渲染
  • 清理定时器/订阅:检查是否有未正确清除的setInterval、WebSocket连接或事件订阅,导致持续触发逻辑

关联提示

大请求体可能是应用启动时上传了过大资源(如本地缓存文件、调试日志),触发服务器错误后,客户端错误处理不当可能引发循环,或加载缓存的旧代码导致注释代码执行,建议先解决PayloadTooLargeError后再验证其他异常是否消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:25:16