【发布时间】:2020-04-02 16:16:01
【问题描述】:
我创建了一个基于 React 和 node/express 的应用程序,并尝试将其部署在 heroku 上。部署进展顺利,我的应用程序可在此处使用:https://sbansal-campaign-manager.herokuapp.com/
但是,即使请求返回 200 响应,调用后端 api 和加载数据也存在问题。
但是,当我单击“预览”选项卡时,它显示:You need to enable JavaScript to run this app. 这是不正确的。 JS 已启用。我可以访问本地计算机上的数据,但当我在 heroku 上部署应用程序时无法访问。在下面分享我的服务器配置:
const express = require("express");
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
// IMPORT MODELS
require('./models/Campaign');
const app = express();
mongoose.Promise = global.Promise;
mongoose.connect(
process.env.MONGODB_URI ||
`mongodb://<user>:<password>@ds145230.mlab.com:45230/sbansal-campaigns-db`
);
app.use(bodyParser.json());
//IMPORT ROUTES
require('./routes/CampaignRoutes')(app);
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"));
});
}
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`app running on port ${PORT}`);
});
我是在 heroku 上部署东西的新手。请帮助解决问题。
这是完整的回购:https://github.com/saranshbansal/sbansal-campaign-manager
【问题讨论】:
-
sbansal-campaign-manager.herokuapp.com/api/campaigns 不是在输出广告系列列表,而是您网站的 HTML。
-
是的,我知道,但它在开发机器上运行良好。可能是我可能必须允许来自所有主机的请求,但我找不到这样的设置。
-
这可能是某种路由/服务器配置问题。你的 Github 中没有 Heroku Procfile 或 .htaccess,所以我不知道东西是如何路由到你的应用程序的。
-
@ceejayoz procfile 不再需要。 heroku 自动检查 package.json 中的启动脚本并生成它。
标签: node.js reactjs express heroku mongoose