В проекте React есть ошибка ApiKey эмулятора Firebase

Недавно я подключил свой проект React к эмулятору Firebase. В производственной среде приложение работало как надо, но после перехода на эмулятор оно стало непредсказуемым.

Я получаю следующие ошибки при запуске локального эмулятора:

POST https://firebaseinstallations.googleapis.com/v1/projects/demo-project/installations 400

и

FirebaseError: Installations: Create Installation request failed with error "400 INVALID_ARGUMENT: API key not valid. Please pass a valid API key." (installations/request-failed).

Вот мой код в моем файле firebase.js:

const firebaseConfig = {
  apiKey: process.env.REACT_APP_APIKEY,
  authDomain: process.env.REACT_APP_AUTHDOMAIN,
  projectId: process.env.REACT_APP_PROJECTID,
  storageBucket: process.env.REACT_APP_STORAGEBUCKET,
  messagingSenderId: process.env.REACT_APP_MESSAGINGSENDERID,
  appId: process.env.REACT_APP_APPID,
  measurementId: process.env.REACT_APP_MEASUREMENTID,
};

const hostname = window.location.hostname;
const app =
  hostname === "localhost"
    ? initializeApp({
        apiKey: "demo-key",
        authDomain: "demo-test",
        projectId: "demo-project",
        storageBucket: "default-bucket",
        appId: "demo-appId",
      })
    : initializeApp(firebaseConfig);

export let auth = getAuth(app);
export let db = getFirestore(app);
export const storage = getStorage(app);
export let functions = getFunctions(app);
export const analytics = getAnalytics(app);

if (hostname === "localhost") {
  connectAuthEmulator(auth, "http://localhost:9099");
  connectFirestoreEmulator(db, "localhost", 8080);
  connectStorageEmulator(storage, "localhost", 9199);
  connectFunctionsEmulator(functions, "localhost", 5001);
}

Я пробовал несколько конфигураций, чтобы устранить эту ошибку, но безрезультатно, и без пары ключ/значение apiKey локальный сайт не отображается.

Любые идеи будут оценены.

Выполняется ли приведенный выше код до ошибки или это ошибка при запуске эмулятора?

Chris 10.04.2023 22:05

@Chris, ошибка возникает при запуске локального хоста, когда эмулятор включен.

Coolkid 11.04.2023 02:15

Согласен с @Chris. Похоже, что ваше приложение React по какой-то причине вызывает производственный бэкэнд и базы данных. Эмулятор не строг к клавишам. Невозможно воспроизвести его локально, приложение запускается, как и ожидалось, без ключевых ошибок.

Artur A 11.04.2023 09:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
3
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

AFAICT «Ключ API недействителен» не выдается эмулятором, что заставляет меня поверить, что вы звоните в производство.

Несколько вещей, которые нужно проверить:

  • Убедитесь, что вы запускаете эмуляторы с помощью demo-project, например:

firebase emulators:start --project=demo-project

  • Убедитесь, что URL-адрес вашего браузера на самом деле «localhost», а не явный IP-адрес, поскольку window.location.hostname возвращает хост на основе URL-адреса браузера.

  • Посмотрите, не вызывает ли проблема вызов getAnalytics — эмулированной службы Analytics нет, поэтому он может вызывать prod с «demo-project» и обязательно завершится ошибкой.

Я использую firebase emulators:start --project=demo-project и адрес браузера http://localhost:3000/

Coolkid 11.04.2023 02:19

Посмотрите мое последнее редактирование — попробуйте удалить getAnalytics и посмотрите, решит ли это проблему, которую вы видите.

Chris 12.04.2023 00:04

Другие вопросы по теме