Next.js 动态路由在部署时无法正常工作

2024-03-18

我使用 Next.js 构建了一个网站,其中有以下文件夹结构:

pages
|- [path]
|  |- index.js
|   
|- [for-students]
|  |- [path]
|  |  |- index.js
|
| index.js
| events.js

在本地开发中一切都运行良好。动态路由使用getServerSideProps()函数检查 CMS 中是否存在所请求的路由:如果存在,则呈现页面,如果不存在,则显示 404 错误。

当网站部署到 AWS Amplify 并且我尝试访问 mysite.com/exemple 或 mysite.com/for-students/internship 等动态路由时,我的问题就出现了。如果我使用页面中的链接(例如导航菜单链接)浏览路线,则动态页面会正确加载,但如果我尝试通过键入 url 来访问这些页面,则会出现 500 错误。 当我通过链接访问页面并重新加载它们时,也会发生该错误。

我很感激任何帮助!

Edit: As @Konrad Linkowski suggested, I checked the server logs, but they are very confusing... I don't even know what to look for. enter image description here


事实证明这个问题与路由无关。 发生的情况是,对于我的所有动态路由页面,我正在调用一个组件并向其传递一些内容。在调用此组件之前,我检查了内容是否有效,如下所示:

<div className="container">
{
 content &&
 <CustomContent content={ content }/>
}
</div>

在将内容传递给组件之前检查内容的有效性后,我认为不需要在 CustomContent 组件内再次检查它,所以它是这样的:

export default function CustomContent({ content }) {

   return (
      <div dangerouslySetInnerHTML={
         { 
            __html: content.description ? content.description : "",
         }
      }/>
   )
}

由于某种我不知道的原因,内容“绕过”有效性验证(内容 &&)并导致 CustomComponent 内部出现错误,因为它试图访问(可能)未定义对象的属性(例如 content 。描述)。

因此,我在自定义内容组件中添加了另一个有效性检查,错误就停止了。

export default function CustomContent({ content }) {

   return (
     <>
     {
        content ? 
          <div dangerouslySetInnerHTML={
             { 
                __html: content.description ? content.description : "",
             }
          }/>
        : 
        <></>
     }
     </>
   )
}

我也不明白为什么错误仅发生在服务器上,并且仅在重新加载页面或通过 URL 访问页面时发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Next.js 动态路由在部署时无法正常工作 的相关文章

随机推荐

  • 显示Java 8流处理的进度

    我有一个Stream处理数百万个元素 其背后的Map Reduce算法需要几毫秒 因此任务完成大约需要二十分钟 Stream
  • python tkinter如何将按键绑定到按钮

    编程新手 尤其是 python 和 tKinter 如何创建一种将键 s 绑定到按钮或功能的方法sharpen 任何帮助都是极好的 from Tkinter import from PIL import Image ImageTk Imag
  • VHDL 中的 NULL 语句

    其实际目的是什么nullVHDL 中的声明 考虑以下代码 1 CASE s IS BEGIN WHEN 0 gt y lt 0 WHEN 1 gt NULL END CASE 2 CASE s IS BEGIN WHEN 0 gt y lt
  • 如何在 asp.net mvc 中通过自定义 jQuery 验证复选框列表

    我有一个复选框列表 我想在客户端使用 jQuery 进行验证 但失败了 我已经在我的项目中添加了 unobtrusive 和 jquery 验证插件 型号代码为 Required public string name get set Ski
  • 不使用 matlab 提取 .mat 数据 - 尝试 scilab 失败

    我已经下载了一个我感兴趣的数据集 但是 它是 mat 格式 并且我无法访问 Matlab 我用谷歌搜索了一下 它说我可以在 SciLab 中打开它 我尝试了一些东西 但我还没有找到任何关于这方面的好的教程 I did fd matfile
  • Socket.EndRead 0字节表示断开连接?

    我想知道在 C 中的异步套接字中 在 EndRead 调用中接收到 0 字节是否意味着服务器实际上已与我们断开连接 我看到的许多例子表明情况确实如此 但我收到的断开连接比我预期的要频繁得多 这段代码正确吗 或者 endResult priv
  • 使用 DDD 方法在 Python 中保留 POJO

    我正在尝试使用 DDD 模式创建 Flask 应用程序 DDD 的核心原则之一是将领域与持久性 基础设施 分离 我已在模块中定义了域模型 并将在基础设施模块中创建存储库 但是 我似乎找不到任何关于如何在 Python 中持久保存 POJO
  • 如何从 MongoDB 获取数据?

    我正在尝试使用 Express MongoDB 构建 React 应用程序 我能够将一些文档发布到 MongoDB 目前 我正在尝试弄清楚如何将获取的数据打印到屏幕上 我有这些路线 router post totalbalance requ
  • 使用 c 访问 /Private/etc

    这可能是一个简单的问题 但如何在 c 控制台应用程序中向用户 请求 系统 根权限 我需要写信给 Private etc 但我不能 这是针对 mac unix 的 我已经看到它被用在其他控制台命令中 例如当您运行以下命令 sudo Syste
  • 在嵌入式 HSQL 数据库中创建架构的最佳方法

    我目前正在使用以下设置在嵌入式数据库中创建一个架构 然后再针对它运行测试 在我的应用程序上下文中
  • 求以下代码的上限和下限

    我需要找到以下代码的最接近的上限和下限 我是这方面的初学者 对我的错误感到抱歉 p 的上限为 O log n 下限为 O 1 notp 的上限为 O log n 下限为 O 1 我认为下界是 O 1 因为如果我有 n 4 那么我进入循环并且
  • 隐藏 Material-UI 自动完成弹出窗口,直到键入文本

    我有一个可用的 Material UIAutocomplete已实现 但是目前当您单击选择一个项目时 除了文本搜索之外 它还会显示所有项目的可单击下拉列表 我希望这样在先输入某些内容之前不会显示下拉选项
  • 选择不同的经度和纬度值并找到它们的中值

    我正在使用 Google Maps API V3 和 jQuery 创建 Phonegap 应用程序 当检测到坑洼时 应用程序将经度和纬度值分别存储在 MySQL 数据库中 我需要做的是选择任何相对接近且很可能是相同坑洞的值 jQuery
  • Java 中的增量模式 (RegEx) 匹配?

    有没有一种方法或一个有效的库允许在Java中进行增量正则表达式匹配 我的意思是 我希望有一个 OutputStream 我可以一次发送几个字节 并跟踪到目前为止与正则表达式的数据匹配 如果接收到一个字节 则肯定会导致此正则表达式not比赛
  • 当我的当前目录不在存储库中时,我可以对存储库中的文件执行 git 操作(add/diff/commit)吗

    使用 svn 我可以在结账时对文件运行命令 而无需cd首先进入结帐处 例如 Located in tmp running svn operation on home d5ve checkout d5ve host tmp gt svn ad
  • Yahoo Pipes:可以从 feedproxy.google.com 网址检索真实网址吗?

    使用 Yahoo Pipes 是否可以轮询此 url http feedproxy google com r Techcrunch 3 P qWQXyAPU http feedproxy google com r Techcrunch 3
  • 如何在iOS上嵌入YouTube视频并直接在UIWebView上播放而不全屏?

    我正在使用此代码在 iOS 上播放 YouTube 视频 void embedYouTube NSString urlString frame CGRect frame NSString htmlString NSString string
  • IBM Worklight 6.0 - 构建问题

    我只是运行一个测试应用程序 我的构建失败并显示以下日志 我尝试过重新启动 更改工作区 创建测试应用程序 但没有成功 请告诉我 ipad build failed Cannot overwrite template file Users ms
  • 如何删除magento中产品图片的缓存url

    对于我的所有 magento 产品图像 我从缓存 url 获取图像 如何禁用它并使我的产品图像使用原始 url 我已在 public html dirname app code core Mage Catalog Helper image
  • Next.js 动态路由在部署时无法正常工作

    我使用 Next js 构建了一个网站 其中有以下文件夹结构 pages path index js for students path index js index js events js 在本地开发中一切都运行良好 动态路由使用get