Я установил хостинг на Firebase и настроил свое экспресс-приложение Node.js в соответствии с документацией, предоставленной Google. Включая правильную структуру папок и инструкции командной строки для запуска функций firebase и firebase.
Структура папки:
Project
-- functions
-- node_modules
-- index.js
-- package.json
-- public
-- index.html
-- 404.html
.firebaserc
firebase.json
Я добавил экспресс-приложение в http-запрос функций firebase с помощью приведенного ниже кода:
// Set up endpoint
app.get('/api', (req, res) => {
res.json({
message: 'Welcome to the Line Prophet API. Good luck.'
})
});
/**
* Firebase cloud functions
*/
exports.app = functions.https.onRequest(app);
Мой файл Firebase.json настроен так, чтобы направлять все запросы в место назначения приложения:
{
"hosting": {
"public": "public",
"rewrites": [
{
"source": "**",
"destination": "app"
}
]
}
}
Как только я запускаю firebase deploy из родительского каталога, все идет хорошо, и в нем говорится, что приложение развернуто:
Однако после этого я перехожу к https://line-prophet.web.app/api a> , и я получаю сообщение об ошибке 404 страница не найдена.
Я пытался запустить это локально с помощью firebase serve , и у меня такая же проблема. Это работало недолго, поэтому я чувствую, что все настроено правильно, однако после повторного развертывания оно сломалось навсегда. Любые советы приветствуются. Спасибо!
Последние развертывания говорят, что в Firebase развернуто всего 4 файла, что кажется очень низким. Я проверил вкладку «Функции» и вижу, что там есть "приложение" и правильный исходный код.
1 ответ
Благодаря @LawrenceCherone, изменившему файл firebase.json на:
"rewrites": [
{
"source": "**",
"function": "app"
}
]
Решил мою проблему. Я использовал пункт назначения вместо функции из-за онлайн-документации, но имеет смысл направлять все запросы в функцию, которую вы настроили для обработки HTTP-запроса.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.