javascript 下一动态路由404 Firebase托管

iibxawm4  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(124)
    • bounty将在4天后过期**。回答此问题可获得+500声望奖励。Mark James希望引起更多人关注此问题。

使用部署在firebase上的next.js应用程序。
我已经部署了应用程序,并使用一些时间.
1.我创建了一个动态路由页面
1.再次部署应用程序
1.* * 我可以通过路由器访问动态页面,但当我刷新页面时,我发现一个404页面未找到**
我尝试过但不起作用的解决方案:

  • 使用dynamicLink true重写
  • 将目标重写为动态路由和regex/源
"rewrites": [
      {
        "source": "/job/**",
        "destination": "/job/[jobId]/index.html"
      }
  • cleanUrls为真
  • 尾随斜线:true+将目标配置重写到动态页面
  • 还有吗

我找到了很多解决这个问题的方法,但没有一个不适合我。
你知道吗?
firebase.json文件:

{
  "hosting": {
    "public": "out",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "cleanUrls": true,
    "rewrites": [
      {
        "source": "**",
        "destination": "out/index.html"
      }
    ]
  },
  "functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ],
      "predeploy": ["npm --prefix \"$RESOURCE_DIR\" run build"]
    }
  ]
}
4bbkushb

4bbkushb1#

这个firebase.json适合我。

{
      "hosting": {
        "public": "out",
        "ignore": [
          "firebase.json",
          "**/.*",
          "**/node_modules/**"
        ],
        "rewrites": [
          {
            "source": "**",
            "destination": "/index.html"
          }
        ]
      }
    }
3htmauhk

3htmauhk2#

要使动态路由工作,您必须使用服务器函数。您可以使用Firebase的实验性框架特性。
checkout -https://firebase.google.com/docs/hosting/nextjs
如果没有服务器函数,Next.js高级(动态)路由将无法工作。
请按照以下步骤操作:
1.删除现有的Firebase文件和文件夹,如firebase.json.firebase等,并更新Firebase cli。
1.启用Web框架预览:firebase experiments:enable webframeworks
1.在Next.js应用的根目录中运行firebase init hosting,然后按照提示操作。
1.运行firebase deploy
确保你已经激活了付费计划,以便firebase-cli可以创建函数。

选项2:

尝试关注
1.重写所有路由到索引页

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

1.将以下代码添加到索引路由

...
const router = useRouter();

useEffect(()=>{
    router.push(location.pathname)
}, [])
...

选项3:

在www.example.com上部署只需创建一个vercel帐户并将其链接到您的GitHub。创建项目,选择您的GitHub存储库,并根据需要设置任何机密。vercel.com Simply create a vercel account and link it to your GitHub. Create project, select your GitHub repo and setup any secrets if you need to. You are done.
如果你想拥有你的. www.example.com域名,你需要从你的firebase站点重定向到vercel部署或者使用iframe,但是如果你已经购买了自己的域名,你可以简单地设置cname条目,你的部署就准备好了。web.app domain, you need to either redirect to vercel deployment from your firebase site or use iframe. But if you have already purchased your own domain name, you can simply setup cname entry and your deployment is ready.

相关问题