【发布时间】:2021-01-06 15:06:44
【问题描述】:
我正在使用esausilva/example-create-react-app-express 为我的 MERN 项目创建基础
在~/server.js 文件中写入
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 服务器在生产模式下运行,那么它将查看 client/build 文件夹以提供静态文件(即前端代码),并且对于任何路由请求,服务器将发送 @987654325 @文件。
在package.json 内我有以下npm run 命令
"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"
},
我的困惑是当我运行yarn dev 它同时运行服务器和响应应用程序(一切都很完美)但在客户端文件夹中我没有看到任何物理构建文件夹,为什么会发生这种情况,服务器如何理解如果不先创建构建文件夹,则提供哪个文件。
【问题讨论】:
标签: javascript node.js reactjs express build