尝试在Heroku中代理请求时发生HPM错误

时间:2019-10-15 14:09:36

标签: node.js reactjs heroku

当我部署自己的MERN应用时,出现以下错误:[HPM] Error occurred while trying to proxy request /api/artefact from myapp.herokuapp.com to http://localhost:5000 (ECONNREFUSED)

这些是有关代理和部署的相关文件:

setupProxy.js

const proxy = require("http-proxy-middleware");

module.exports = app => {
    app.use(proxy("/api/", { target: "http://localhost:5000" }));
};

server.js

const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const logger = require("morgan");
const { mongo_uri } = require("./config/config");
const path = require("path");

let cors = require("cors");

const PORT = process.env.PORT || 5000;

const app = express();
app.use(cors());

// Set up Routes
const artefactRoutes = require("./routes/api/artefact.js");
const userRoutes = require("./routes/api/users.js");
const authRoutes = require("./routes/api/auth.js");

// Connect to MongoDB Database
const dbRoute = mongo_uri;
mongoose
    .connect(dbRoute, { useNewUrlParser: true })
    .then(() => console.log("Connected to Database"))
    .catch(err => console.log(err));

// Body Parser Middleware to parse request body into readable json format
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// Used for logging
app.use(logger("dev"));

app.use("/api", artefactRoutes);
app.use("/api/users", userRoutes);
app.use("/api/auth", authRoutes);

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

    app.get("*", (req, res) => {
        // relative path
        res.sendFile(path.join(__dirname, "../client", "build", "index.html"));
    });
}

app.listen(PORT, () =>
    console.log(`Static server has started. Listening on port ${PORT}`)
);

static.json(尽管我不确定是真的做什么,因为我只是发现有人在另一个线程上执行此操作,但这对我没有任何改变)

{
    "root": "build/",
    "clean_urls": false,
    "routes": {
        "/**": "index.html"
    }
}

和我的脚本在父目录package.json中

"scripts": {
        "start": "concurrently \"cd backend && node server.js\" \"cd client && npm start\"",
        "format": "prettier",
        "heroku-postbuild": "cd client && npm install && npm run build"
    },

可能会有助于提及我的文件夹结构如下:

-/project
--/client
--/backend

基本上,我遇到的问题是我已将我的react应用程序部署到heroku上,并且前端加载正常,但是对我的后端的axios api调用均未返回任何内容,只是给了我504超时错误,并且在heroku日志中,它只是说代理错误。任何帮助将不胜感激!

0 个答案:

没有答案