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

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

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

52 ответов

56 просмотров

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 версия библиотеки. Сначала импорты на неё меняют, а потом остальное.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта