我正在 Firebase 云功能和托管之上构建我的网络应用程序。我的客户端是使用 create-react-app 构建的,并且我有一个小型快速服务器在云功能中运行,为应用程序构建提供服务。
在普通浏览器窗口中一切正常,但是,我遇到一个问题,如果我在隐身模式或移动设备中访问任何不是“/”的 url,我会得到 404 和“未找到”
即:直接点击“ https://144blocks.com/week ”将在普通浏览器窗口中正常加载,但在隐身和移动设备中会引发以下错误。
我为网站提供服务的 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);
在我的客户中,我的 firebase.json 文件:
firebase.json
{
"hosting": {
"public": "react-ui/build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "app"
}
]
}
}
我不知道为什么除了隐身窗口或移动设备中的“/”之外,我不能直接点击任何路线。理想情况下,我希望我的所有路由都流经app.get(/*
我的快速服务器上的路由,并让我的客户端处理路由。