Функции Firebase: Нечеткая "ошибка подключения"
Я получаю эту ошибку каждый так много работает с моей облачной функцией HTTP Firebase:
Function execution took ****ms, finished with status: 'connection error'
Это происходит непоследовательно, но я не могу сузить суть проблемы. Я не верю, что ошибка в моем приложении, так как она не отображает распечатку ошибок. И моя собственная связь с firebase при запуске этой облачной функции не вырезается.
Любые идеи о том, почему Firebase случайно не выполняет выполнение облачных функций с "ошибкой соединения"?
Ответы
Ответ 1
Function execution took ****ms, finished with status: 'connection error'
имеет две основные причины:
- Попытка вызвать службу, отличную от Google, во время плана Spark (см. страница ценообразования). Это можно исправить путем перехода на платный план.
- Функция не знает, разрешено ли обещание или нет. Каждое обещание должно быть возвращено, как указано в документах здесь. Существует также запись в блоге (с полезным видео!) об этом.
Несколько примеров невозвращенных promises:
exports.someFunc = functions.database.ref(‘/some/path’).onCreate(event => {
let db = admin.database();
// UNRETURNED PROMISE
db.ref("/some/path").remove();
return db.ref("/some/other/path").set(event.data.val());
});
exports.makeUppercase = functions.database.ref('/hello/{pushId}').onWrite(event => {
return event.data.ref.set('world').then(snap => {
// UNRETURNED PROMISE
admin.database().ref('lastwrite').set(admin.database.ServerValue.TIMESTAMP);
});
});
exports.makeUppercase = functions.database.ref('/hello/{pushId}').onWrite(event => {
// UNRETURNED PROMISE
event.data.ref.set('world').then(snap => {
return admin.database().ref('lastwrite').set(admin.database.ServerValue.TIMESTAMP);
});
});
Чтобы устранить эту ошибку перед развертыванием кода, проверьте это правило eslint.
Для углубленного просмотра promises, вот несколько полезных ресурсов:
Ответ 2
Я думаю, что может быть слишком много одновременных подключений базы данных firebase:/https://groups.google.com/forum/#!topic/firebase-talk/4RjyYIDqMVQ
Ответ 3
Я получаю это по HTTP-триггеру, который немедленно вызывает response.end() без другого кода!
У меня была очень сложная функция, которая работала отлично, затем она перестала работать из-за этой ошибки. Я часами пытался поиграть с моим кодом, пока не осталось ничего, кроме response.end(), и все равно ошибка не исчезла.
Я обнаружил, что, удалив триггер (развертывание моих триггеров с закомментированным триггером-нарушителем), затем повторное развертывание с безкомментированным триггером, похоже, исправило его.
Возможно, есть ошибка, которая работает, которая сбрасывается при удалении триггера в облаке.
Надеюсь, это спасет кого-то от разочарования.
Ответ 4
это могут быть устаревшие библиотеки. 1. зайдите в терминал 2. внутри команды записи в папку функций
нпм устарел
это покажет все библиотеки, которые требуют обновления. 3. Для обновления библиотеки напишите команду
npm update 4. разверните облачные функции с помощью firebase deploy --only functions