使用 Google Cloud (GAE) 部署到自定义域时,React 应用程序未定位 .js 文件

React app not locating .js files when deployed to custom domain with Google Cloud (GAE)

我有一个 React 应用程序,我正试图在自定义域应用程序 运行 上使用 GCP [customDomain].com。它找不到静态文件,我不确定为什么。

React 应用程序作为服务部署在 Google 云上(不是默认的,是项目中的第二个服务)。它与 Google 分配的 URL (https://[Service_ID]-dot-[Project_ID].ue.r.appspot.com/) 完美配合。当 运行 通过自定义域时,index.html 加载但找到 none 个 .js 文件(因此结果是空白屏幕)并给出此错误:

.js 文件错误 404

项目中的其他服务(默认和 Django API)在同一个域上服务得很好,我的目标是让 React 应用程序在 app. 子域上服务。为此,我有以下 dispatch.yaml

dispatch:
- url: "www.[customDomain].com/"
  service: default

- url: "api.[customDomain].com/"
  service: default

- url: "app.[customDomain].com/"
  service: React-App

我怀疑问题出在 React 应用程序的 app.yaml 中,但我无法确定需要更改的内容。这是当前的 app.yaml

env: standard
runtime: nodejs14
service: React-App
handlers:
- url: /static
  secure: always
  static_dir: build/static
- url: /(.*\.(json|ico|js))$
  secure: always
  static_files: build/
  upload: build/.*\.(json|ico|js)$
- url: .*
  secure: always
  redirect_http_response_code: 301
  static_files: build/index.html
  upload: build/index.html

我尝试在 package.json 中更改 "homepage" 但没有成功。

除了依赖关系,package.json 包含:

"name": "React-App",
  "version": "0.1.0",
  "private": true,
  "proxy": "http://localhost:8000",

我自己发现了问题。问题在 dispatch.yaml。 url 字段需要 [subDomain].[customDomain].com/*.

在当前形式中,它是仅在 URL 上的精确文本匹配(回退到 default 服务)。这意味着页面的初始加载命中 React-App 服务,但资源加载落在 default 服务上,因此无法找到它们。添加 * 到 url 意味着资源请求被路由到正确的服务。