#firebase #express #google-cloud-functions #firebase-hosting
# #firebase #экспресс #google-cloud-функции #firebase-хостинг
Вопрос:
Это то, что я предполагаю для моих firebase.json
перезаписей.
"rewrites": [
{
"source": "/api",
"function": "api"
},
{
"source": "**",
"destination": "/index.html"
}
]
Выполняются ли перезаписи по порядку (в данном случае /api
сначала проверяется маршрут **
)?
Если нет, могу ли я отправить все маршруты в свою функцию express и просто обработать маршрутизацию к статическим файлам react там?
"rewrites": [
{
"source": "**",
"function": "express"
}
]
const functions = require('firebase-functions')
const express = require('express')
const path = require('path');
const app = express()
// Init Middleware
app.use(express.json({ extended: false }));
// Define Routes
app.use('/api/users', require('./routes/users'));
app.use('/api/auth', require('./routes/auth'));
app.use('/api/contacts', require('./routes/contacts'));
// Serve static assets in production
if (process.env.NODE_ENV === 'production') {
// Set static folder
app.use(express.static('client/build'));
app.get('*', (req, res) =>
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'))
);
}
exports.express = functions.https.onRequest(app)
Ответ №1:
Выполняются ли перезаписи по порядку (в данном случае сначала проверяется маршрут /api перед **)?
ДА. Это явно указано в документации:
Важно: в атрибуте rewrites хостинг применяет перезапись, определенную первым правилом, с шаблоном URL, который соответствует запрошенному пути. Итак, вам нужно намеренно упорядочить правила в атрибуте rewrites .
Это позволяет обслуживать как динамический, так и статический контент.
Комментарии:
1. спасибо, Даг!! это было действительно ясно. будет ли работать второй вариант?
2. Конечно, вы, конечно, могли бы попробовать, но это будет стоить дороже и может быть менее эффективным.