【问题标题】:GCP AppEngine favicon.ico not found未找到 GCP AppEngine favicon.ico
【发布时间】:2020-10-20 23:21:39
【问题描述】:

一直在拉扯我的头发,试图弄清楚为什么 favicon.ico 不能正确加载。需要 Google Cloud AppEngine 专家的帮助。

该项目是一个 React 应用程序,其中gcp-build 将生成一个build 文件夹,其中包含favicon.ico

考虑以下cloudbuild.yaml

steps:
- name: node:12
  args: ["yarn"]
- name: node:12
  args: ["yarn", "gcp-build"]
- name: node:12
  args: ["rm", "-rf", "node_modules"]
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy", "--version=mark0"]
timeout: "1600s"

app.yaml 看起来像:

service: react-demo
runtime: nodejs12

handlers:
  - url: /favicon.ico
    static_files: build/favicon.ico
    upload: build/favicon.ico

点击页面https://react-demo-dot-xxxx-xxxxx.df.r.appspot.com/favicon.ico总是会得到404错误。

有人可以帮忙吗?

【问题讨论】:

  • 也许来自社区的其他post 的答案可以帮助您。尝试在接受的答案上使用 app.yaml 文件。
  • 谢谢@daniel-ocando,我已经阅读了这篇文章。为了隔离问题,我将app.yaml 更改为只有一个handlers,并且React 应用程序不再通过/ 提供服务。然而..仍然无济于事。不过,这真的很奇怪,从 AppEngine 中查看 source 文件存在。你认为这是运行时的原因吗?
  • 您介意更新您正在使用的实际 app.yaml 文件吗?它是否包含以下处理程序:` - url: /(.*\.(json|ico))$ static_files: build/\ upload: build/.*\.(json|ico)$` (抱歉格式化,但我需要写一个答案,这样你才能正确地看到它。)
  • 嗨@DanielOcando,不用担心格式。 app.yaml 共享的正是部署到 AppEngine 的文件。

标签: google-app-engine google-cloud-platform app.yaml


【解决方案1】:

要调试 Cloud Build 步骤、部署或运行​​时本身是否存在问题(注意 Nodejs 12 runtime is currently in beta),请构建 React App locally 并尝试使用 gcloud app deploy 直接部署应用程序,使用以下 app.yaml 文件:

runtime: nodejs10
service: react-demo

handlers:
  - url: /static/js/(.*)
    static_files: build/static/js/\1
    upload: build/static/js/(.*)
  - url: /static/css/(.*)
    static_files: build/static/css/\1
    upload: build/static/css/(.*)
  - url: /static/media/(.*)
    static_files: build/static/media/\1
    upload: build/static/media/(.*)
  - url: /(.*\.(json|ico))$
    static_files: build/\1
    upload: build/.*\.(json|ico)$
  - url: /
    static_files: build/index.html
    upload: build/index.html
  - url: /.*
    static_files: build/index.html
    upload: build/index.html

【讨论】:

  • 终于知道是什么导致了这个问题。显然,其中一位工程师部署了一个 dispatch.yaml,其中包含一个调度 - url: */favicon.ico 到默认服务。作为 GCP 的新手,我只查看了 react-demo 服务中的日志,而不是 default 的日志。非常感谢您的帮助!
  • 很高兴您找到了错误背后的真正原因。随时发布答案和采取的措施以帮助社区。​​span>
【解决方案2】:

原来有一个dispatch.yaml 使用 CLI 在我不知情的情况下部署,并且没有提交到代码中。在那个dispatch.yaml 中,它将所有*/favicon.ico 指向默认服务。我学到的一个教训是搜索日志,在这种情况下,假定的服务中没有记录 404 错误,但在 default 服务的日志中却很丰富。

希望这将有助于其他人进行故障排除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    相关资源
    最近更新 更多