Javascript 部署React+;NodeJS+;Express+;MySQL应用程序到Heroku仅部署服务器,不部署服务器
正如标题所述,我有一个React+NodeJS+Express+MySQL,我们正试图将其部署到Heroku网页。我将它设置为每当有东西被推送到GitHub的主分支时自动部署 我们遇到的问题是,它正在为服务器部署路由并显示所有正确的信息,但react应用程序根本不显示。如何使服务器路由不显示,而react前端显示 附件是Server.js的代码以及我正在运行以构建客户端的脚本Javascript 部署React+;NodeJS+;Express+;MySQL应用程序到Heroku仅部署服务器,不部署服务器,javascript,node.js,reactjs,express,heroku,Javascript,Node.js,Reactjs,Express,Heroku,正如标题所述,我有一个React+NodeJS+Express+MySQL,我们正试图将其部署到Heroku网页。我将它设置为每当有东西被推送到GitHub的主分支时自动部署 我们遇到的问题是,它正在为服务器部署路由并显示所有正确的信息,但react应用程序根本不显示。如何使服务器路由不显示,而react前端显示 附件是Server.js的代码以及我正在运行以构建客户端的脚本 const express = require('express') const cors = require('cor
const express = require('express')
const cors = require('cors')
const app = express()
const path = require('path');
const port = process.env.PORT || 8080;
const homeRoute = require("./routes/home");
const allReviews = require("./routes/getAllReviews");
const mostRecentReviews = require("./routes/mostRecentReview");
const postReview = require("./routes/postReview");
const editReview = require("./routes/editReview");
const updateReview = require("./routes/updateReview");
const deleteReview = require("./routes/deleteReview");
const filterReview = require("./routes/getFilterReview");
const recentReviews = require("./routes/mostRecentReview");
const locationAverageRating = require("./routes/locationAverageRating");
const allLocations = require('./routes/allLocations');
app.use(cors())
app.use('/', homeRoute);
app.use('/review', allReviews);
app.use('/locations', allLocations);
app.use('/review/recent', mostRecentReviews);
app.use('/review/post', postReview);
app.use('/review/edit', editReview);
app.use('/review/update', updateReview);
app.use('/review/delete', deleteReview);
app.use('/review/filter', filterReview);
app.use('/carrier/recent',recentReviews);
app.use('/carrier/edit', editReview);
app.use('/carrier/locations', locationAverageRating);
app.use(express.static('client/build'));
app.get('*', (req, res) =>{
res.sendfile(path.resolve(__dirname + "./client/build/index.html"));
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log(`Example app listening on port ${port}!`)
});
Heroku构建脚本:
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
提前感谢您的帮助,如果您需要任何其他文件或有任何问题,请随时联系 使用
应用程序时。使用顺序很重要。因为所有服务器路由都是在到react生成的路由之前声明的,所以服务器路由将优先
考虑在服务器路由前面加上一些前缀,使其与前端构建应该处理的请求不同(/api
是一种常见的选择)
另一个选项是为前端指定路线(/app
可能)。您可以将某些GET
请求重定向到homeRoute
中的此路由,这样,如果有人从根URL访问您的站点,他们就会到达正确的位置(假设您没有其他GET
路由需要homeRoute
处理)
因此,您可以将通配符GET
路由更改为如下所示:
app.get('/app*', (req, res) => {
res.sendfile(path.resolve(__dirname + "./client/build/index.html"));
})
然后进入“回家路线”
app.get('*', (req, res) => {
res.redirect('/app')
})
...other homeRoutes
这是我在一年前做类似事情时多次提到的一篇博文,你可能也会发现它很有用:谢谢你,我会研究一下这个解决方案并回复你!