169 похожих чатов

Приветствую коллеги. Имеется вопрос относительно эмулятора. А точнее понимания

его предназначения
Вопрос:
Если запускать локально приложение использую firebase emulators start, то вызов функций будет происходить локально?
И второй вопрос:
Если вызов функций будет происходить локально, то никакой ошибки CORS быть не должно?
Если это так, то никаких манипуляций по настройки приложения на локальные порты делать не надо?
Спасибо.

52 ответов

18 просмотров

1) Да 2) Зависит от варианта использования 3) Приложение надо настраивать. В документации есть инструкция

Алексей- Автор вопроса

Добрый день, коллеги. В продолжении темы о настройке firebase emulators. Запустил на локальное среде использую команду firebase emulator:start Настроил function на локальный порт, как было написано в доке. А именно добавил cors export const cors = require('cors')({origin: true}); export const FN = firebase.functions() FN.useFunctionsEmulator("127.0.0.1", 5001) Задачу с CORS решил следующим путем. На примере одной функции exports.getTimeStamp = functions.https.onCall(function () { return new Promise(function (resolve) { cors(() => { console.log("getTimeStamp"); resolve({ timestamp: Date.now() }); }); }) }); После настройки появилось сообщение Error: Response is not valid JSON object. Кто-то сталкивался с таким сообщением в контексте firebase? Допустим firebase произвел у себя обновления. Мог firebase после обновления своего начать возвращать данные в другом виде в отличии от предыдущей своей версии?

Алексей
Добрый день, коллеги. В продолжении темы о настрой...

Для onCall функций cors не надо настраивать, это делается автоматически. Cors нужно настраивать только для обычных http функций.

Алексей- Автор вопроса
Arthur G
Для onCall функций cors не надо настраивать, это д...

Да, действительно cors получается не нужен. И в итоге выяснилось что ошибка Error: Response is not valid JSON object. не из CORS появляется. Может быть ошибка Error: Response is not valid JSON object. связана с версией NodeJs используемой в проекте?

Что за Response?

Алексей- Автор вопроса
Arthur G
Что за Response?

Думаю, это ответ на запрос с моей стороны на сервер. Происходит выборка данных и возвращается назад ответ. В доке написан пример с использованием v2/https. Я использую "firebase-functions": "^3.3.0" Может из-за различий версий function возвращаться ошибка?

вы локализовали место ошибки?

Алексей- Автор вопроса
Arthur G
вы локализовали место ошибки?

К сожалению, нет. Поэтому и поинтересовался на счет запуска вне билда, дабы найти место сбоя.

Алексей- Автор вопроса

Ошибка описанная мною ранее. А именно Error: Response is not valid JSON object.

Стектрейс?

Алексей- Автор вопроса
Алексей
screenshot

Попробуйте source maps включить.

Алексей- Автор вопроса
Arthur G
Попробуйте source maps включить.

Добрый день. В продолжении разговора, Source maps включить в браузере или указать параметр при сборке проекта?

Алексей- Автор вопроса
Алексей
Ошибка описанная мною ранее. А именно Error: Respo...

Причина ошибки известна. const refTime = FN.httpsCallable('getTimeStamp') const { timestamp } = await refTime().then(res => res.data) В первой строчке Promise Во второй строчке ошибка getTimeStamp имя функции exports.getTimeStamp = functions.https.onCall(function () { return new Promise(function (resolve) { resolve({ timestamp: Date.now() }); }); }); Настройки export const FN = firebase.functions() FN.useFunctionsEmulator(":5001") export const DB = firebase.database() export const FS = firebase.firestore() export const STOR = firebase.storage()

Алексей- Автор вопроса
Алексей
Причина ошибки известна. const refTime = FN.https...

При вызове getTimeStamp, с использование эмулятора функции, стучится по адресу http://127.0.0.1:5000/:5001/MY_NAME_PROJECT/us-central1/getTimeStamp В мое представлении он должен был иди по адресу http://127.0.0.1:5001/getTimeStamp Без использования эмулятора функции, стучится по адресу https://us-central1-MY_NAME_PROJECT.cloudfunctions.net/getTimeStamp И выдает CORS Ошибку

Надо подключать эмуляторы в приложении.

Алексей- Автор вопроса
Arthur G
Надо подключать эмуляторы в приложении.

Если, к примеру, пишу так firebase.database().useEmulator("127.0.0.1", 9000); firebase.database().useFunctionsEmulator("127.0.0.1", 9000); пишет что такой функции нет database(...).useEmulator is not a function database(...).useFunctionsEmulator is not a function

Алексей
Если, к примеру, пишу так firebase.database().useE...

У вас скорее всего 9 версия. Поэтому, примеры нужно смотреть от модульного веб API. https://firebase.google.com/docs/emulator-suite/connect_functions

Алексей- Автор вопроса
Arthur G
screenshot У вас скорее всего 9 версия. Поэтому, примеры нужн...

Добрый день. В продолжении темы развертывания эмулятора. Прописал import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

Алексей- Автор вопроса
Arthur G
screenshot У вас скорее всего 9 версия. Поэтому, примеры нужн...

Добрый день. В продолжении темы развертывания эмулятора. Прописал import { getApp } from "firebase/app"; import { getFunctions, connectFunctionsEmulator } from "firebase/functions"; console.log(getApp) console.log( getFunctions) в обоих console выдает undefined В связи с этим вопрос. У меня "скорее всего 9 версия" чего? У меня 8 версия nodejs В package.json прописан firebase: 5.8.2

Алексей- Автор вопроса

В проекте, где определяются только функции

Алексей- Автор вопроса

9 версия чего нужна?

Алексей
В проекте, где определяются только функции

Мне кажется с такими старыми версиями эмулятор использовать не получится. На 9 так просто переключиться тоже не получиться. У вас сейчас Web namespaced API.

Алексей- Автор вопроса
Алексей
9 версия чего нужна?

В одном проекте два под проекта. Один клиент, второй functions.

Алексей
В одном проекте два под проекта. Один клиент, втор...

Для использования эмулятора скорее всего придется обновляться до последних версий библиотек.

Алексей- Автор вопроса
Arthur G
Для использования эмулятора скорее всего придется ...

С 9 версии firebase можно пользоваться уже namespace API?

Алексей- Автор вопроса

Может до 9 можно web MODULAR api? А начиная с 9 NAMESPACE?

Алексей
Может до 9 можно web MODULAR api? А начиная с 9 NA...

Модульный — новый, другой — старый.

Алексей- Автор вопроса
Arthur G
Модульный — новый, другой — старый.

если namespace более ранняя, то с начиная с какой версии доступная функция useEmulator на firestore?

Алексей- Автор вопроса
Алексей
Добрый день, коллеги. В продолжении темы о настрой...

Добрый день. В продолжение темы CORS. На сервере firebase возникает ошибка как на изображении приложенном. Из названия доменов делаю вывод, что не может клиент достучатся до cloud-functions. Насколько помню, права на функции давал максимальные для всех.

Алексей- Автор вопроса
Arthur G
Для onCall функций cors не надо настраивать, это д...

Исходя из этого сообщения, делаю вывод, что для функций cors не нужен. Кроме как советов о настройки CORS и выдача прав на функции в инете и в текущем канале толком больше ничего не нашел. Имеются ли предположения или решения текущей ошибки? Спасибо.

Алексей
Исходя из этого сообщения, делаю вывод, что для фу...

Такое может случиться, если например имя функции неправильно написать.

Алексей- Автор вопроса
Arthur G
Это логи браузера?

Это из консоли браузера при загрузке страницы

Алексей- Автор вопроса
Arthur G
Это onCall функция?

Да, functions.https.onCall(function () { return new Promise(function (resolve) {

Алексей- Автор вопроса
Arthur G
Такое может случиться, если например имя функции н...

До этого 2 года работало без ошибок. Никто не прикасался к проекту. С недавних пор так произошло.

Алексей- Автор вопроса
Arthur G
Такое может случиться, если например имя функции н...

Неправильно написать имя функции при ее вызове?

Алексей
До этого 2 года работало без ошибок. Никто не прик...

А есть что в логах функций? https://console.cloud.google.com/logs

Алексей- Автор вопроса
Алексей- Автор вопроса
Arthur G
Мне кажется с такими старыми версиями эмулятор исп...

В чем могут быть сложности в переключении на module? Надо будет значительную кодовую базу менять?

Алексей
В чем могут быть сложности в переключении на modul...

В 9 версии вроде бы есть compat версия библиотеки. Сначала импорты на неё меняют, а потом остальное.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
У тебя в конфиге нигде нет deny all; или вообще любого deny?
Alexander Sherbakov
10
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
4
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Карта сайта