在 Google App Engine 上部署 create-react-app [英] Deploy create-react-app on Google App Engine

查看:42
本文介绍了在 Google App Engine 上部署 create-react-app的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试部署使用 create-react-app 创建的应用程序Google 应用引擎.

I'm trying to deploy my app created using create-react-app on Google App Engine.

我的应用程序在本地运行良好(npm startnpm run build & serve -s build).但是,在 Google App Engine 上部署的应用仅显示 index.html,并没有调用我的 react 代码.

My app works well on local (both npm start and npm run build & serve -s build). However, the deployed app on Google App Engine shows only the index.html, and does not call my react code.

Chrome 开发者控制台显示 Uncaught SyntaxError: Unexpected token <.

The Chrome Developer Console is showing Uncaught SyntaxError: Unexpected token <.

此外,我在 console.cloud.google.com 上发现部署的应用程序不包含构建文件夹.这是正确的吗?

Also, I found on console.cloud.google.com that the deployed app did not include the build folder. Is this correct?

谁能解决这个问题?

这是我的 package.json:

Here is my package.json:

{
  "name": "XXXXX",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "react": "^16.8.2",
    "react-dom": "^16.8.2",
    "react-ga": "^2.5.7",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.1.5"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
 },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}

另外,这是我的 app.yaml.

Also, here is my app.yaml.

runtime: nodejs10

handlers:
- url: /.*
  static_files: build/index.html
  upload: build/index.html
- url: /
  static_dir: build

推荐答案

在网上搜索了很多次,发现是我的react app的路由系统造成的.

As a result of searching the web many times, I found that the routing system of my react app was the cause.

作为 这篇文章 指出,我们在编写 app.yaml 时需要小心.如果我们先写下面这一项,GAE 会为所有查询返回build/index.html,包括访问/static/js/static/css.

As this post states, we need to be careful about authoring app.yaml. If we write the following item first, GAE returns build/index.html for all queries, including access to /static/js and /static/css.

- url: /
  static_files: build/index.html
  upload: build/index.html

create-react-appnpm run build 创建一个构建文件夹和静态子文件夹.因此,我必须像这样更具体地编写我的 app.yaml:

create-react-app creates a build folder and static subfolders for npm run build. Thus, I had to write my app.yaml more specific like this:

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

这篇关于在 Google App Engine 上部署 create-react-app的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆