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

如何解决AWS Amplify部署后Expo linking配置失效问题

Expo Linking在AWS Amplify线上环境失效的常见原因和解决方案

1. Linking前缀与线上域名不匹配

Linking.makeUrl('/')仅会生成本地开发环境的地址(如http://localhost:19006/),无法自动识别AWS Amplify的线上域名,导致路由匹配失败。
你需要手动将线上域名添加到Linking配置的prefixes数组中:

export default {
  // 新增所有线上部署的域名到数组
  prefixes: [
    Linking.makeUrl('/'),
    'https://你的自定义域名.com/',
    'https://xxx.amplifyapp.com/' // Amplify默认分配的域名
  ],
  config: {
    screens: {
      Root: {
        screens: /* screens routes */
      }
    }
  }
}

2. Amplify未配置SPA路由回退规则

Expo Web是单页应用,所有路由都需要回退到index.html才能被前端Linking逻辑识别,Amplify默认没有开启该配置,直接访问子路由会返回404。
配置方法:

  • 进入AWS Amplify控制台的对应项目
  • 左侧菜单选择「重写和重定向」
  • 新增如下规则:

源地址:</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|json)$)([^.]+$)/>
目标地址:/index.html
状态码:200(重写)

3. 构建环境Node版本不兼容

你当前构建配置使用的Node 12版本过旧,新版expo-linking和expo-cli最低要求Node 16及以上LTS版本,低版本构建会产生隐性兼容问题。
修改amplify.yml的preBuild阶段配置:

preBuild:
  commands:
    - nvm use 16 # 替换为你本地开发使用的Node LTS版本
    - npm install --quiet --global expo-cli
    # 其余原有命令保持不变

4. 子路径部署配置缺失

如果你将项目部署在域名的子路径下(如https://xxx.amplifyapp.com/app/),需要额外在app.json中配置expo.web.publicUrl为对应子路径,同时同步更新Linking的prefixes配置,否则路由匹配会出现偏移。


内容的提问来源于stack exchange,提问作者Felipe César

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:30:01