在生产中部署 ReactJS 应用程序(使用 nodeJS 后端)

IT技术 node.js reactjs web webpack deployment
2021-05-13 16:34:38

我们的项目现在已经结束,我们只有两周的时间将项目交还给我们大学最后一年的学习。我们的老师告诉我们,现在开发阶段已经结束,我们必须将其部署到生产阶段。

我们将 ReactJS 用于前端(托管在 localhost://3000 中)和 NodeJS 用于服务器/数据库管理(托管在 localhost://3004 中)。

到目前为止,我已经对如何部署它进行了一些研究(老师说理想情况下它是一个 zip,我们可以将其插入网页,就像 html 一样,并且它可以工作)。

到目前为止,我还没有做到这一点。很多人建议使用“webpack”来管理它,但我们一开始没有配置它,因为我们对 reactJS 一无所知,我不知道我们现在是否可以做到。我已经阅读了教程等并尝试了一些关于 NODE_ENV 的东西,但直到现在我都被错误所困扰。

任何人都可以帮助我和我的队友吗?

提前致谢!

3个回答

我假设您使用 create-react-app 来生成您的 React 项目。我的文件夹结构是这样的:

  • 客户端(这是我的react应用程序)
  • 配置
  • 控制器
  • 路线
  • 楷模
  • index.js(express 应用程序在 index.js 中)
  • 包.json

我用来将我的应用程序部署到 Heroku 的步骤如下:

  1. 在 package.json 中,将此行添加到脚本中"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"

  2. 然后"engines": { "node" : "[your node version]" }在脚本之后添加这个

  3. 在 index.js 中,将以下代码放在路由设置之后

    if (process.env.NODE_ENV === "production") {
      app.use(express.static("client/build"));
      const path = require("path");
      app.get("*", (req, res) => {
        res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
      });
    }
    
  4. 我假设您使用 git 进行版本控制并且已经安装了 heroku。打开你的终端,然后 heroku login -> heroku create -> git push heroku master。如果您没有收到任何错误,您就成功部署了您的应用程序。

这是我将我的应用程序部署到 Heroku 的GitHub https://github.com/dnp1204/instagrom我希望它能让你知道如何去做

希望你能得到它的工作!

要使用 cli 部署 react 应用程序构建create-react-app,首先您需要在您的 中设置主机package.json,因此在您package.json添加的这一行中

"homepage":"http://localhost/" ,assuming you will host your app on the root directory of your webserver 

package.json会看起来像这样

{
  "name": "nameofyourapp",
  "version": "0.1.0",
  "private": true,
  "homepage":"http://localhost/",
  "dependencies": {
    .....
  },
  "scripts": {
  ......
  }
}

然后在您的应用程序文件夹中运行此命令

npm run build

然后复制构建文件夹中的内容并将其粘贴到服务器的根目录中,您最终会得到这样的文件

httdocs //root directory of your webserver
  |
  |-static
  |
  |-index.html
  |-serviceworker.js

之后,您将无法从浏览器访问您的网络服务器:http://localhost/

在 2019 年,这对我有用:

在 node.js 服务器中:

app.use('/react',   express.static(path.join(__dirname, '../client/build')));

在 package.json react

http://localhost:server-port/client 

并在浏览器中输入

http://localhost:server-port/client .

您现在应该会看到 react 主页。希望对某人有帮助。