执行expo publish发布Expo应用返回404错误问题求助
Expo publish指定release-channel发布时返回404错误排查方案
问题复现场景
执行发布命令:expo publish --release-channel test
接口直接返回404状态码,报错信息为Request failed with status code 404。
已尝试以下操作均未解决问题:
- 将React版本从16.8.6降级至16.8.3重试
- 注册全新Expo账号后重新登录发布
- 切换至此前可正常执行该命令的旧账号操作
当前项目环境版本:
- Expo SDK:33.0.0
- Expo CLI:3.4.1
- React:16.8.6
- React Native:0.59.8
根因排查&修复步骤
1. 先校验app.json核心配置
绝大多数账号切换后仍然报404的问题都是配置不匹配导致的:
- 打开项目根目录
app.json,核对expo.slug字段值,必须和当前登录账号下已存在的Expo项目slug完全一致。SDK33配套的老版本CLI不会在slug不存在时自动创建项目,找不到对应项目资源就会直接返回404。 - 如果是发布到团队/组织账号下的项目,必须在
expo节点下显式添加owner字段,值为对应组织的Expo账号名,缺省该字段时CLI默认会向个人账号空间请求项目接口,资源不存在就报404。
2. 修复CLI版本兼容bug
你当前使用的Expo CLI 3.4.1和SDK 33存在已知的发布接口路径拼接bug,会导致请求打到不存在的接口地址返回404,按以下步骤替换到适配版本:
# 全局卸载当前版本CLI npm uninstall -g expo-cli # 安装适配SDK33的稳定固定版本 npm install -g expo-cli@3.2.3
安装完成后先执行expo whoami确认当前登录账号身份正确,再删除项目根目录下的.expo缓存文件夹,重新执行发布命令即可。
3. 老版本SDK服务兼容处理
Expo官方已经停止对SDK 45以下版本的经典expo publish接口的公开支持,如果上述两步操作后仍然返回404,可选择以下任意一种方案处理:
- 升级项目Expo SDK版本到45及以上,迁移到官方最新的EAS更新服务,使用
eas update --channel test替代原有expo publish命令完成分通道发布 - 暂时无法升级SDK的话,可以自行搭建自托管的expo-updates资源服务,把打包后的更新资源上传到自有存储服务,绕开官方已停服的老版本发布接口。
内容的提问来源于stack exchange,提问作者Arnit Gashi
相关产品推荐
相关产品推荐

