1
votes

Je ne peux pas spécifier une nouvelle région pour les fonctions cloud

J'ai changé l'emplacement de mes fonctions cloud de "us-central1" à "europe-west1" mais je ne peux pas changer l'emplacement de mes fonctions côté client ce qui est une étape obligatoire pour que cela fonctionne selon la documentation.

(IDE me dit qu'aucun argument n'est attendu sur les 'fonctions' quand je fais:

firebase.initializeApp(config).functions("europe-west1");

Pour tenter de résoudre mon problème, j'ai mis à jour les trois dépendances ci-dessous sans résultat.

firebase-tools @ dernières fonctions firebase @ dernier firebase-admin @ dernier

Le problème est toujours là.


0 commentaires

4 Réponses :


6
votes

Vous devriez visiter la page de documentation suivante.

côté client

Utilisez firebase.app.App.

https://firebase.google.com/docs/reference/js/firebase.app.App#functions

Pas admin.app.App. Le firebase-admin est uniquement utilisé côté serveur.

https://firebase.google.com/docs/reference/admin/node/admin.app.App

Définissez les régions spécifiées pour une application cliente.

const functions = require('firebase-functions');
 
exports.webhookEurope = functions
    .region('europe-west1')
    .https.onRequest((req, res) => {
        res.send("Hello");
    });

côté serveur (Cloud Functions)

Définissez les régions spécifiées pour chaque fonction.

var firebase = require("firebase/app");
require("firebase/functions");
var config = {
  // ...
};
firebase.initializeApp(config).;
var functions = firebase.app().functions('europe-west1');

Si vous modifiez les régions spécifiées pour une fonction qui gère le trafic de production, vous pouvez éviter la perte d'événements en exécutant ces étapes dans l'ordre:

  1. Renommez la fonction et modifiez sa ou ses régions selon vos besoins.
  2. Déployez la fonction renommée, ce qui entraîne l'exécution temporaire du même code dans les deux ensembles de régions.
  3. Supprimez la fonction précédente.


1 commentaires

Merci pour votre réponse, mais j'ai parcouru toute la documentation comme indiqué dans ma question, le problème est du côté de mon IDE, je ne peux pas le faire fonctionner.



0
votes

J'ai finalement réussi à régler ma situation, en réinstallant ionic.

De plus .functions("europe-west1") doit être mis à chaque appel, pas seulement dans app.module.ts


0 commentaires

0
votes

Ça marche de cette façon!

const firebaseApp = firebase.initializeApp(firebaseConfig);

  async signup(provider, info) {
    if (!this.isValid) {
      return;
    }
    try {
      switch (provider) {
        case this.EMAIL:
          return await firebaseAuth().createUserWithEmailAndPassword(
            info.email,
            info.password
          ).then(authUser => {
            const addUser = firebaseApp.functions('europe-west1').httpsCallable('addUser');
            addUser({email: info.email,
              name: info.name})
              return authUser
          })
        default:
      }
    } catch (error) {
      return error;
    }
  }


0 commentaires

0
votes

Avec Typescript, vous définissez la région comme ceci:

export const myFunction = functions.region("europe-west2").firestore.document("users/{userId}")


0 commentaires