Cette page répond aux questions fréquentes sur App Hosting.
App Hosting Questions fréquentes
Limites et dépannage généraux App Hosting
- En raison d'un problème dans l'infrastructure Cloud Run, la création ou la mise à jour de ressources peut être plus lente que prévu dans certaines régions, comme
us-central1. Si la latence de déploiement pose problème dans une région spécifique, Google recommande de déployer dans une autre région. - Le CDN de App Hosting ne peut inclure qu'un ensemble spécifique d'en-têtes de requête dans ses clés de cache. Cette liste inclut les en-têtes
RSC,Next-Router-State-Tree,Next-Router-Prefetch,Next-Router-Segment-PrefetchetNext-Urlde NextJS, ainsi que les en-têtes standardsAccept,Accept-Encoding,Access-Control-Request-Headers,Access-Control-Request-Method,Origin,Sec-Fetch-Dest,Sec-Fetch-Mode,Sec-Fetch-Site,X-Goog-Allowed-ResourcesetX-Originde Cloud CDN. Si une réponse contient un en-têteVaryavec une valeur qui ne figure pas dans la liste ci-dessus, notre CDN ne la mettra pas en cache. - Les fichiers statiques non mis en cache sont diffusés à partir de Cloud Run. Dans une version ultérieure, ils seront stockés et diffusés à partir de l'origine App Hosting pour améliorer les performances.
- La console Firebase peut afficher par intermittence une erreur "build was not found and is invalid" (compilation introuvable et non valide) lors de la création du backend.
- Tous les backends d'un même projet partagent une organisation ou un compte GitHub. Ils peuvent être associés à différents dépôts de cette organisation ou de ce compte. Pour créer des backends associés à différents comptes GitHub, placez-les dans des projets distincts.
Limites et dépannage des applications Angular
Bien que la compatibilité de App Hosting avec Angular soit en cours de développement et d'expansion, elle présente les limites suivantes :
- I18n : bien que la fonctionnalité I18n de base fonctionne, la navigation directe vers les pages SSR peut entraîner des erreurs.
- Localisation : la création de versions pour différentes langues n'est pas prise en charge.
- Builders : seul le générateur d'applications est actuellement compatible.
- Environnements et outils Monorepo : les projets Angular comportant plusieurs cibles d'application échoueront. Pour une prise en charge plus complète des monorepos, utilisez Nx.
Erreurs HTTP 400 et confiance du proxy dans Angular SSR
Si votre application Angular déployée sur Firebase App Hosting rencontre des erreurs HTTP 400 (requête incorrecte), des bloqueurs de validation d'hôte ou des échecs de confiance du proxy, suivez la solution recommandée pour votre version d'Angular :
- Angular v19, v20 et v21 : vous avez deux façons de résoudre ces erreurs HTTP 400 :
- Mettez à niveau les dépendances : exécutez
npm update @angular/core @angular/ssrpour installer la dernière version corrective de votre version actuelle d'Angular. - Configuration manuelle : appliquez un remplacement de configuration au niveau du code en définissant
trustProxyHeaders: truedans la configuration de votre serveur (consultez Configurer les en-têtes de proxy de confiance dans la documentation Angular).
- Mettez à niveau les dépendances : exécutez
- Angular v22 : la première compilation sur un nouveau backend peut renvoyer des erreurs 400. Pour résoudre le problème, générez une deuxième version. Toutes les versions ultérieures devraient fonctionner comme prévu.
Limites et dépannage de Next.js
- Par défaut, l'optimisation d'image NextJS intégrée est désactivée sur App Hosting, sauf si vous définissez explicitement
images.unoptimizedsur "false" ou si vous utilisez un chargeur d'image personnalisé. Consultez Optimiser le chargement des images sur Next.js. - Actuellement, App Hosting limite la mise en cache des applications NextJS à l'aide du middleware. Au fil du temps, les taux de succès de cache devraient s'améliorer.
- Les chemins d'URL contenant des caractères encodés en pourcentage sont décodés par Cloud Run. Cela peut entraîner des problèmes avec les fonctionnalités qui n'attendent que des chemins d'URL encodés, comme le routage parallèle Next.js.