Firebase云功能+;找不到托管-404

Firebase云功能+;找不到托管-404,firebase,express,google-cloud-functions,firebase-hosting,incognito-mode,Firebase,Express,Google Cloud Functions,Firebase Hosting,Incognito Mode,我正在Firebase云功能的基础上构建我的web应用程序,并进行托管。我的客户端是用create-react应用程序构建的,我有一个运行在云功能中的小型express服务器,为应用程序构建提供服务 在正常的浏览器窗口中一切正常,但我遇到了一个问题,如果我在匿名模式下访问任何不是“/”的url或移动设备,我会得到404和“未找到” ie:直接点击“”将在正常浏览器窗口中正常加载,但在incognito和mobile中抛出以下错误 我为网站服务的firebase功能是: 函数/index.js

我正在Firebase云功能的基础上构建我的web应用程序,并进行托管。我的客户端是用create-react应用程序构建的,我有一个运行在云功能中的小型express服务器,为应用程序构建提供服务

在正常的浏览器窗口中一切正常,但我遇到了一个问题,如果我在匿名模式下访问任何不是“/”的url或移动设备,我会得到404和“未找到”

ie:直接点击“”将在正常浏览器窗口中正常加载,但在incognito和mobile中抛出以下错误

我为网站服务的firebase功能是:

函数/index.js

const functions = require('firebase-functions');
const express = require('express');
const fs = require('fs');
const path = require('path');

const app = express();

app.get('/*', (req, res) => {
    const fullPath = path.normalize(__dirname + '/../react-ui/build/index.html');

    res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    res.sendFile(fullPath);
});

exports.app = functions.https.onRequest(app);
在我的客户端my firebase.json文件中:

firebase.json

{
  "hosting": {
    "public": "react-ui/build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "function": "app"
      }
    ]
  }
}

我不知道为什么除了在匿名窗口或移动设备中的“/”之外,我不能直接点击任何路线。理想情况下,我希望我的所有路线都通过一个
app.get(/*
在我的express服务器上,并让我的客户端处理路由。

Firebase主机当前存在问题,这似乎影响了许多站点,包括我自己的两个站点。您可以通过此来了解它们的最新状态。

我仍然无法100%确定为什么这样做有效,但我通过: 1.在我的
functions/index.js
文件中,更新
fullPath
,因为我认为
\uu dirname+'/../react ui/build/index.html'
没有解析

我的名字
functions/index.js
文件:

const functions = require('firebase-functions');
const express = require('express');
const path = require('path');

const app = express();

app.get('/*', (req, res) => {
    const fullPath = path.normalize(__dirname + '/build/index.html');

    res.set('Cache-Control', 'public, max-age=300, s-maxage=600');
    res.sendFile(fullPath);
});

exports.app = functions.https.onRequest(app);
  • 在我的构建过程中,我将构建目录移动到functions文件夹中,以便与函数一起部署到Firebase,这样,当我准备部署时,我的项目目录看起来就像
    functions
    react ui
    中的构建目录一样:
  • 如果有人能更深入地了解这一点的原因,我将不胜感激


    谢谢!

    尝试运行
    firebase登录
    。我遇到了这个问题,这是因为我的登录会话已过期

    或者,如果您在标准登录时遇到问题,请尝试
    firebase登录--no localhost


    如果您使用的是ci/cd,请使用
    firebase登录:ci--无本地主机
    ,将您的ci令牌保存到
    firebase_令牌
    下的环境中,并使用
    firebase部署--仅限功能--令牌$firebase_令牌

    进行部署。仅供参考:在Mac上的Chrome中也为我提供了404。顺便说一句,该应用程序看起来很棒,至少在主页动画中是这样。 :-)@FrankvanPuffelen感谢您对应用程序@Onaracs的双重检查和赞扬。您最终是如何修复的?感谢您提供的信息,但是,我不相信这与此相关,因为我已经看到这个问题好几天了。我相信这个问题是因为这个bug而发生的-有什么帮助吗?@EliseChant对为什么会这样没有100%的信心它在工作,但它是!