使用 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 意味着资源请求被路由到正确的服务。
我有一个 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 意味着资源请求被路由到正确的服务。