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à.
4 Réponses :
Vous devriez visiter la page de documentation suivante.
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"); });
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:
- Renommez la fonction et modifiez sa ou ses régions selon vos besoins.
- 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.
- Supprimez la fonction précédente.
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.
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
Ç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; } }
Avec Typescript, vous définissez la région comme ceci:
export const myFunction = functions.region("europe-west2").firestore.document("users/{userId}")