在 Google App Engine 上部署 create-react-app
Posted
技术标签:
【中文标题】在 Google App Engine 上部署 create-react-app【英文标题】:Deploy create-react-app on Google App Engine 【发布时间】:2019-07-16 04:30:36 【问题描述】:我正在尝试在 Google App Engine 上部署使用 create-react-app 创建的应用。
我的应用在本地运行良好(npm start
和 npm run build & serve -s build
)。
但是,Google App Engine 上部署的应用只显示 index.html,并没有调用我的 react 代码。
Chrome 开发者控制台显示Uncaught SyntaxError: Unexpected token <
。
另外,我在 console.cloud.google.com 上发现部署的应用程序不包含构建文件夹。这是正确的吗?
谁能解决这个问题?
这是我的 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。
runtime: nodejs10
handlers:
- url: /.*
static_files: build/index.html
upload: build/index.html
- url: /
static_dir: build
【问题讨论】:
你在部署之前做了 npm run build 吗? 我做了,但没用... 【参考方案1】:你能检查一下这个文件吗-https://medium.com/tech-tajawal/deploying-react-app-to-google-app-engine-a6ea0d5af132
这将对您有所帮助。我已经使用相同的步骤部署了我的应用程序。
示例 yaml 文件
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: build/index.html
upload: build/index.html
- url: /
static_dir: build
参考链接 - https://medium.com/google-cloud/how-to-deploy-a-static-react-site-to-google-cloud-platform-55ff0bd0f509
谢谢!
【讨论】:
@Daisuke SHIBATO - 添加 .yaml 文件和参考链接以使事情变得清晰。 您好苛刻,感谢您的评论。我发现这个问题的原因是我在 GAE 上的 react 应用的路由。 很高兴您的问题得到解决。如果它对您有所帮助,请接受此答案,以便遇到类似问题的其他人也能从中受益。 尝试上传所有的node_modules吗? 不应该【参考方案2】:在网上搜了很多遍,发现是我的react app的路由系统导致的。
正如this post 所说,我们在编写 app.yaml 时需要小心。
如果我们先写下面这一项,GAE 会为所有查询返回build/index.html
,包括对/static/js
和/static/css
的访问。
- url: /
static_files: build/index.html
upload: build/index.html
create-react-app
为npm run build
创建一个构建文件夹和静态子文件夹。
因此,我不得不像这样更具体地编写我的 app.yaml:
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
【讨论】:
请编辑答案,放入完整的 app.yaml。你在运行时放了什么?以上是关于在 Google App Engine 上部署 create-react-app的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google App Engine 上部署 Ktor 应用程序?
在 Google App Engine 上部署 create-react-app-typescript
在 Google App Engine 中部署 Spring Boot gradle 应用
在 Google App Engine 上部署 Django ==> 错误:(gcloud.app.deploy)NOT_FOUND:无法检索 P4SA(...)