Nextjs动态路由在firebase托管中不工作



我有一个动态路由器job/[jobId],但它不工作后托管。我不知道怎么在firebase.json中写出rewrites。这是我的重写。

当前firebase抛出404如果我访问一个页面,如job/2

输出结构
├── job
│   └── [jobId]
│       └── index.html

页面结构
.
├── _app.js
├── _document.js
├── careers
│   └── index.js
├── index.js
├── job
│   └── [jobId].js
└── privacy.js

重写

"rewrites": [
{
"source": "job/**",
"destination": "job/[jobId]/index.html"
}

"rewrites": [
{
"source": "/job/**",
"destination": "/job/[jobId]/index.html"
}

启动/缺失

在面对同样的问题时,我在这里遇到了一个非常有助于理解Firebase和Next.js如何交互的讨论,因此我需要使用什么解决方案。

https://github.com/firebase/firebase-js-sdk/discussions/4980

帮助我的总结可以在那个链接上找到,但为了完整性,我将在这里包括它。

  • 添加trailingSlash: true,到next.js.config
    • 这允许所有静态路由工作(即没有" slugg "的路由)
  • 添加动态/"到firebase.json
  • 的rewrites部分的路由

相关摘录自firebase.json:

{
"hosting": {
"target": "my-app",
"public": "frontend/out",
"rewrites": [
{
"destination": "/job/[jobId]/index.html",
"regex": "^/job/([^/]+?)(?:/)?$"
},
]
},
}

下面是一个实用程序脚本的要点,它可以从.next文件夹中获取所有动态鼻涕虫路由,并将它们放在firebase中。(主要用于CI相关用例)。 https://gist.github.com/jeff-r-koyaltech/6195f546764443d0cc7c5efe48fbe896

相关内容

  • 没有找到相关文章

最新更新