gpt4 book ai didi

node.js - 如何将 MERN 堆栈部署到托管服务?

转载 作者:行者123 更新时间:2023-12-03 13:36:55 25 4
gpt4 key购买 nike

我是 Web 开发新手,我有一个托管服务,我想在其上部署我的 ReactJS/Node 项目。之前为了部署它,我只是上传了通过运行 npm run build 创建的构建文件夹。此后,我使用 MERN 堆栈添加了与 mongodb 数据库的连接。

该项目最初是使用 create-react-app 创建的,然后我按照本教程设置了后端 Node/mongodb:https://appdividend.com/2018/11/11/react-crud-example-mern-stack-tutorial/ 。我的所有服务器代码都包含在 api 文件夹的项目文件夹中。

我可以通过运行 npm startnodemon server.js (来自 api 文件夹)并连接到终端中的 mongodb 在本地主机上运行该项目。当我尝试以与之前相同的方式从托管服务运行它时,它说它无法连接到数据库,我认为这是由于我的计算机上未打开连接。

目前,所有 API 调用均使用 axios post 至 http://localhost:4000/ ,我也认为这在服务器上不起作用。我在网上查找了有关部署 MERN 堆栈的信息,但我找到的所有信息都在 AWS EC2 上托管方面进行了讨论,这不是我要做的事情。

我如何能够部署到我的托管服务?我应该在哪些引用资料或地方查找此信息?

编辑:我已使用 MongoAtlas 连接到数据库,因此使用 SRV 地址。我认为问题是 axios 帖子使用本地主机地址,因为服务器上的应用程序只有在我的本地计算机上运行 nodemon 时才能工作。我应该使用什么地址来代替这个地址?

最佳答案

Currently, all the API calls are using axios post to http://localhost:4000/, which I would also assume will not work on the server.

你是对的,那是行不通的。这是因为,如果用户获取您的 React 应用,所有 API 调用都将重定向到他们的本地主机。不包含您的 API

When I try to run it from the hosting service in the same way I did previously, it says it cannot connect to the database, which I assume is due to the fact that the connection is not open on my machine.

这可能是因为 MongoDB URL 可能仍设置为 'mongodb://localhost:27017/myapp 之类的内容。这里有两个主要选项。

  1. 使用“数据库托管服务”,例如 MongoDB Atlas ,然后您需要更改数据库的 URL 以指向该服务提供的 URL
  2. 在您的服务器上托管数据库,它将与 localhost URL 配合使用

I have looked online for information regarding deploying the MERN stack, but all of the ones I have found discuss it in terms of hosting on AWS EC2, which is not what I will be doing.

  • 您拥有控制权和灵 active 的任何服务器都可以在这种情况下工作。如果需要,您可以在其上托管所有内容(服务器、前端和数据库)。 EC2 可以做到这一切,但这不是您唯一的选择。您还可以查看 Microsoft 和 Google 等的类似产品...
  • 另一种方法是单独部署每个工件,这种方法更具可扩展性,但也引入了其自身的复杂性。如果您要这样做,您可能需要查看 Docker containersKubernetes 这对于编排分布式系统很有用

编辑

由于您使用的是 MongoDB Atlas,请确保将服务器的 IP 地址列入白名单

关于node.js - 如何将 MERN 堆栈部署到托管服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54854594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com