提问者:小点点

为什么当我用react app作为前端运行nodejs服务器时没有client/build文件夹


我正在使用esausilva/example-create-react-app-express为我的MERN项目创建一个基础

它是在文件中编写的

if (process.env.NODE_ENV === 'production') {
  // Serve any static files
  app.use(express.static(path.join(__dirname, 'client/build')));

  // Handle React routing, return all requests to React app
  app.get('*', function(req, res) {
    res.sendFile(path.join(__dirname, 'client/build', 'index.html'));
  });
}

根据我的理解,这意味着如果express服务器在生产模式下运行,那么它将查看文件夹以提供静态文件(即前端代码),对于任何路由请求,服务器将发送文件。

中,我有以下命令

"scripts": {
    "client": "cd client && yarn start",
    "server": "nodemon server.js",
    "dev": "concurrently --kill-others-on-fail \"yarn server\" \"yarn client\"",
    "dev:server": "cd client && yarn build && cd .. && yarn start",
    "start": "node server.js",
    "heroku-postbuild": "cd client && npm install && npm install --only=dev --no-shrinkwrap && npm run build"
  },

我的困惑是,当我运行时,它同时运行服务器和响应应用程序(一切都很完美),但在客户机文件夹中,我没有看到任何构建文件夹,为什么会发生这种情况,如果express server不首先创建构建文件夹,它如何理解要为哪个文件提供服务。


共1个答案

匿名用户

您需要一个构建脚本,以便它能够生成构建文件夹,命令yarn dev所做的就是它运行开发服务器。您可以在react文档中看到更多信息。