我使用 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.
事实证明这个问题与路由无关。
发生的情况是,对于我的所有动态路由页面,我正在调用一个组件并向其传递一些内容。在调用此组件之前,我检查了内容是否有效,如下所示:
<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(使用前将#替换为@)