常见问题解答和问题排查

本页面提供了有关 App Hosting 的常见问题解答 (FAQ)。

App Hosting 常见问题解答

一般 App Hosting 限制和问题排查

  • 由于 Cloud Run 基础设施存在问题,在某些区域(例如 us-central1)创建或更新资源的速度可能会比预期慢。如果特定区域的部署延迟时间过长,Google 建议部署到其他区域。
  • App Hosting 的 CDN 只能在其缓存键中包含一组特定的请求标头。该列表包含 NextJS 的 RSCNext-Router-State-TreeNext-Router-PrefetchNext-Router-Segment-PrefetchNext-Url 标头,以及 Cloud CDN 的标准 AcceptAccept-EncodingAccess-Control-Request-HeadersAccess-Control-Request-MethodOriginSec-Fetch-DestSec-Fetch-ModeSec-Fetch-SiteX-Goog-Allowed-ResourcesX-Origin。如果响应包含一个值未在此处列出的 Vary 标头,我们的 CDN 将不会缓存该响应。
  • 未缓存的静态文件会从 Cloud Run 中提供;在后续版本中,这些文件将存储在 App Hosting 源中并从该源提供,以提高性能。
  • Firebase 控制台可能会在后端创建过程中间歇性地显示“找不到 build,build 无效”错误。
  • 同一项目中的所有后端共享一个 GitHub 组织/账号。它们可以连接到该组织/账号下的不同代码库。如需创建连接到不同 GitHub 账号的后端,请将它们放在不同的项目中。

Angular 应用限制和问题排查

虽然 App Hosting 对 Angular 的支持正在积极开发和扩展,但仍存在以下限制:

  • I18n:虽然核心 I18n 功能可以正常运行,但直接导航到 SSR 页面可能会导致错误。
  • 本地化:不支持为不同语言区域构建版本。
  • 构建器:目前仅支持应用构建器。
  • 环境和 Monorepo 工具:如果 Angular 项目包含多个应用目标,则会失败。如需更完善的 monorepo 支持,请使用 Nx。

Angular SSR 中的 HTTP 400 错误和代理信任

如果部署在 Firebase App Hosting 上的 Angular 应用遇到 HTTP 400(错误请求)错误、主机验证阻塞或代理信任失败,请按照建议的解决方案操作(具体取决于您的 Angular 版本):

  • Angular v19、v20 和 v21:您可以通过以下两种方式解决这些 HTTP 400 错误:
    • 升级依赖项:运行 npm update @angular/core @angular/ssr 以安装当前 Angular 版本的最新补丁版本。
    • 手动配置:通过在服务器配置中设置 trustProxyHeaders: true 来应用代码级配置回退(请参阅 Angular 文档中的配置可信代理标头)。
  • Angular v22:在新后端上进行的首次构建可能会返回 400 错误。如需解决此问题,请生成第二次构建。所有后续构建都应按预期运行。

Next.js 限制和问题排查

  • 默认情况下,除非您明确将 images.unoptimized 设置为 false 或使用自定义图片加载器,否则应用托管服务会停用内置的 NextJS 图片优化功能。请参阅优化 Next.js 中的图片加载
  • 包含百分比编码字符的网址路径由 Cloud Run 解码。这可能会导致仅需要编码后的网址路径的功能出现问题,例如 Next.js 并行路由。
  • 目前,App Hosting 会限制使用中间件的 NextJS 应用的缓存。随着时间的推移,缓存命中率应该会提高。
  • 包含百分比编码字符的网址路径会被 Cloud Run 解码。这可能会导致某些功能出现问题,例如 Next.js 并行路由,这些功能只接受编码的网址路径。