将React App部署到heroku无法连接后端

2022-09-29
前端之家小编收集整理的将React App部署到heroku无法连接后端内容,希望整理的这个开发编程问题将React App部署到heroku无法连接后端能够快速解决!

代码问题

我正在尝试使用node.js,react和MongoDB将我的应用程序部署到Heroku;部署成功;但是,该网站无法从MongoDB获取数据。 错误是GET http://localhost:5000/comment net::ERR_CONNECTION_REFUSEDUncaught (in promise) Error: Network Error,我认为这是因为后端没有运行node server.js。谁能帮助我正确部署此方法? 我在后端的pakage.json是

    "client-install": "npm install --prefix myprofile","start":"node server.js","server":"nodemon server.js","client":"npm start --prefix myprofile","dev":"concurrently \"npm run server\" \"npm run client\"","heroku-postbuild":"NPM_CONFIG_PRODUCTION=false npm install --prefix myprofile && npm run build --prefix myprofile"
  }

我的server.js是

const express = require("express");
const cors = require("cors");
const mongoose = require("mongoose");
const path = require("path");
require("dotenv").config();

const app = express();
const port = process.env.PORT || 5000;

app.use(express.json());
app.use(cors());
//app.use(express.static(path.join(__dirname,'./myprofile/build')));

const uri = process.env.ATLAS_URI;
mongoose.connect(uri,{
  useNewUrlParser: true,useCreateIndex: true,useUnifiedTopology: true
});
const connection = mongoose.connection;
connection.once("open",() => {
  console.log("MongoDB data connected");
});
const CommentRouter = require("./CommentRouter");
app.use("/comment",CommentRouter);

if (process.env.NODE_ENV === "production") {
  app.use(express.static("myprofile/build"));
  app.get("*",(req,res) => {
    res.sendFile(path.resolve(__dirname,"myprofile","build","index.html"));
  });
}

app.listen(port,() => console.log(`Server is running on ${port}`));

非常感谢您!

问题答案

如果要将这个项目部署到heroku,则您的start命令和server.js类似于this example,因此这是一个好的开始。

您是否要使用heroku设置环境变量,特别是process.env.ATLAS_URI?我可以想象heroku不知道您的MongoDB数据库位于哪里。

如果觉得前端之家所整理的内容很不错的话,欢迎点击下方分享按钮,转发给身边开发程序员好友。

编程问答


我正在尝试使用node.js,react和MongoDB将我的应用程序部署到Heroku;部署成功;但是,该网站无法从MongoDB获
里面的箱子有问题吗 <pre><code>case&#39;usal&#39;: d= (while(s2&gt;0)
我正在尝试从Wikipedia中查找页面列表的Wiki ID。这是我的想法,但是在打印“简介”时出现错误:“类型
我正在学习ES6,并且正在学习免费的在线课程。在课程中,我们涵盖了Promises,所以我有: <pre><code>i
当我尝试运行此代码时,它显示“ com.mysql.jdbc.JDBC4ResultSet@7e2d773b”,当前该表只有一条记录。 <pre><co