【问题标题】:Structuring and deploying node frontend and backend to Google App Engine构建节点前端和后端并将其部署到 Google App Engine
【发布时间】:2022-01-12 16:26:56
【问题描述】:

我正在开发一个包含两个节点应用程序的 React 项目:

  • Client:前端代码使用 React JS 和 Axios 向我的后端服务发出请求。
  • API:后端服务使用 Mongoose 连接到 MongoDB 和 Express 以处理 RESTful 请求。

我有几个问题:

  • 像这样为前端和后端创建单独的节点应用程序是最佳实践吗?我想确认这是一个好的设置。
  • 我在将其部署到 Google App Engine 时遇到了一些困难,可以使用一些指针。

我目前做了什么:

  • 在我的 API 服务子目录中添加了 api.yaml
  • 使用gcloud app deploy client/app.yaml api/api.yaml 进行部署,该gcloud app deploy client/app.yaml api/api.yaml 部署了两个服务(前端和后端)。

这是一个好方法吗?

如果是这样,我现在面临的挑战是我的 API 服务被部署到子域并且来自我的前端的请求失败。在本地,我使用proxy 值将请求代理到本地主机上的后端端口,但我不确定如何修改我的应用程序以在生产环境中动态向正确的子域发出后端请求(我也认为 CORS 来了发挥作用)。

【问题讨论】:

  • 无法评论整体架构(即具有单独的后端和前端),但在同一个项目下具有不同但相关的应用程序作为服务是可以的。我不清楚为什么您的后端请求必须是动态的。你的前端正在调用一个已知的 url(你的后端服务)对吗?
  • 需要根据环境切换(本地运行时为localhost,生产时为api.somedomain.com)。
  • 为此,你可以使用一个变量,这样你就有了类似的东西 - const my_host = process.env.NODE_ENV === 'development' ? "https://localhost:8080" : "https://mydomain.example.com";

标签: node.js reactjs express google-app-engine google-cloud-platform


【解决方案1】:

您需要一个dispatch.yaml 文件。 dispatch.yaml 允许你覆盖路由规则。您可以使用 dispatch.yaml 根据 URL 中的路径或主机名将传入请求发送到特定服务(以前称为模块)。

【讨论】:

  • 这是最简单的解决方案,效果很好。谢谢!
  • 请将此答案标记为已接受
猜你喜欢
  • 2020-09-24
  • 1970-01-01
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 2012-08-06
  • 1970-01-01
  • 2018-09-25
  • 2017-07-27
相关资源
最近更新 更多