Краткое описание проблемы: я хочу инициировать запрос POST от моей облачной функции Firebase к моему node.js бэкэнду, который в настоящее время работает на моем локальном компьютере. Выполнение функции начинается, но вызов POST никогда не достигает серверной части.
Среда разработки:
- Firebase Realtime DB: план Blaze. Новая запись в БД запускает функцию облака.
- Функция облака Firebase: ax ios 0.19.2, firebase-admin 8.10.0, firebase-functions 3.6.1.
- Backend: node v12.14.1, http://XXX.XXX.X.XX: 3000
Ожидаемые результаты: POST-вызов из Firebase Cloud Function запускает маршрут в node.js backend для обработки данных, полученных при вызове POST.
Фактический результат: вызов POST никогда не достигает node.js серверной части, запущенной в данный момент на локальном компьютере. Войдите в консоль Firebase Cloud Functions:
Выполнение функции заняло 60012 мс, завершено со статусом: 'timeout'
Что я пробовал до сих пор?
- POST-вызов из POSTMAN без проблем достигает моего бэкэнда.
- Замена ax ios на request-prom-native для выполнения POST-вызова.
- Замена http://XXX.XXX.X.XX: 3000 by http://localhost: 3000 .
- Использование .then (). Catch () синтаксиса ax ios.
- Использование asyn c синтаксис await для ax ios со структурой try & catch.
Код функции Firebase Cloud:
const functions = require('firebase-functions');
const axios = require('axios');
const admin = require('firebase-admin');
admin.initializeApp();
const BACKEND_URL = 'http://XXX.XXX.X.XX:3000';
exports.triggerNotification = functions.database.ref('/sessions/{sessionID}/{message}')
.onCreate(function(snapshot, context) {
const createdContent = snapshot.val();
const config = { headers: { 'Content-Type': 'application/json' } };
if (!createdContent) {
return;
}
return axios.post(`${BACKEND_URL}/notification/trigger`, { createdContent } ,config);
});
Node.js Backend code:
router.post('/trigger', function (req, res) {
console.log('req.body', req.body);
res.status(200).send('Post request received');
});