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

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

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

52 ответов

52 просмотра

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта