Firebase云功能+;找不到托管-404
我正在Firebase云功能的基础上构建我的web应用程序,并进行托管。我的客户端是用create-react应用程序构建的,我有一个运行在云功能中的小型express服务器,为应用程序构建提供服务 在正常的浏览器窗口中一切正常,但我遇到了一个问题,如果我在匿名模式下访问任何不是“/”的url或移动设备,我会得到404和“未找到” ie:直接点击“”将在正常浏览器窗口中正常加载,但在incognito和mobile中抛出以下错误 我为网站服务的firebase功能是: 函数/index.jsFirebase云功能+;找不到托管-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
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
和react ui
中的构建目录一样:
谢谢!尝试运行
firebase登录
。我遇到了这个问题,这是因为我的登录会话已过期
或者,如果您在标准登录时遇到问题,请尝试firebase登录--no localhost
如果您使用的是ci/cd,请使用
firebase登录:ci--无本地主机
,将您的ci令牌保存到firebase_令牌
下的环境中,并使用firebase部署--仅限功能--令牌$firebase_令牌进行部署。仅供参考:在Mac上的Chrome中也为我提供了404。顺便说一句,该应用程序看起来很棒,至少在主页动画中是这样。 :-)@FrankvanPuffelen感谢您对应用程序@Onaracs的双重检查和赞扬。您最终是如何修复的?感谢您提供的信息,但是,我不相信这与此相关,因为我已经看到这个问题好几天了。我相信这个问题是因为这个bug而发生的-有什么帮助吗?@EliseChant对为什么会这样没有100%的信心它在工作,但它是!