在 AWS Amplify 控制台上部署为 SPA 后,Nuxtjs 动态路由在页面重新加载时不起作用

Posted

技术标签:

【中文标题】在 AWS Amplify 控制台上部署为 SPA 后,Nuxtjs 动态路由在页面重新加载时不起作用【英文标题】:Nuxtjs dynamic routes doesn't work on page reload after deploying as a SPA on AWS Amplify console 【发布时间】:2020-06-17 13:50:38 【问题描述】:

我已使用 AWS Amplify 控制台将我的 Nuxtjs 应用程序部署为 AWS 上的 SPA。现在我的网站有一些动态路由,当重新加载或在新选项卡中打开时重定向到 404 页面。我知道当我们使用nuxt generate 生成静态站点时,路由应该在 nuxt.config.js 中使用 routes()。但在 SPA 模式下,它应该正在处理页面刷新或重新加载。即使在 Angular 中以 SPA 模式运行时,动态路由也可以正常工作。奇怪的是,当网站作为单页应用程序运行时,动态路由不起作用。

在生产模式下本地使用时,即npm run build && npm run start,路由工作正常。但在将其部署到 AWS Amplify 后,它会重定向到 404 页面。我在这里想念什么? 这是我使用的 Amplify.yml 配置

version: 0.1
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    # IMPORTANT - Please verify your build output directory
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*
test:
  artifacts:
    baseDirectory: cypress
    configFilePath: '**/mochawesome.json'
    files:
      - '**/*.png'
      - '**/*.mp4'
  phases:

【问题讨论】:

【参考方案1】:

我写了一篇关于如何在 Amplify here 上部署 Nuxt 应用程序的文章。

简而言之:

    转到应用设置 -> 重写和重定向 点击编辑并删除现有规则 添加以下新规则:

来源地址:</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>

目标地址:/index.html

输入:200 (Rewrite)

【讨论】:

【参考方案2】:

@lupas 在 nuxt discord 中帮助了我。你只需要如下设置

1) 在 Amplify 控制台上转到:重写和重定向 2)删除现有条目 3)添加以下内容: 源地址: 目标地址:/index.html 类型:200(重写)

【讨论】:

能否请您详细说明您在源地址中写的内容?对于像myWebsite.com/pending/243535 这样的动态路由,我遇到了完全相同的问题。我尝试使用/pending/* 没有成功 就我而言,与@Pascal 的方法相同,但仅使用/pending/<*> 就可以了

以上是关于在 AWS Amplify 控制台上部署为 SPA 后,Nuxtjs 动态路由在页面重新加载时不起作用的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify SPA React + Cognito(已启用 Microsoft Azure Ad Enterprise SSO)+ Microsoft Graph API

NextJS 与 Aws Amplify 部署错误

未找到 AWS Amplify 环境“开发”

如何将环境变量添加到 AWS 放大?

如何使用 Amplify CLI“拉取”命令拉取在 AppSync Web 控制台上所做的更改

在 AWS lambda Web 控制台上测试 Apollo graphql 查询