首页 > 解决方案 > 在heroku上部署时前后没有连接

问题描述

我正在努力使此页面正常工作。Heroku 上的部署对于两个应用程序(服务器和前端)都是成功的。但不知何故,我的正面和背面在这里没有正确连接 mi node.js | index.js 文件

const express = require("express");
const app = express();

const mongoose = require("mongoose");
const authRoute = require("./routes/auth");
const userRoute = require("./routes/users");
const postRoute = require("./routes/posts");
const categoryRoute = require("./routes/categories");
const multer = require("multer");
const path = require("path");
require('dotenv').config();


app.use(express.json());
app.use(express.static('public')); //added to search public folder
app.use("/images", express.static(path.join(__dirname, "/images")));


mongoose
  .connect((process.env.MONGO_URL), {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true, // just a recomended line if there's an error
    useFindAndModify:true
  })
  .then(console.log("Connected to MongoDB"))
  .catch((err) => console.log(err));

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "images");
  },
  filename: (req, file, cb) => {
    cb(null, req.body.name);
  },
});

const upload = multer({ storage: storage });

//added all
app.get("/", (req, res) => {
  res.status(200).json({
    status: 'ok',
    message: 'Hello! I am working perfecly!(get request)'
  });
});






app.post("/api/upload", upload.single("file"), (req, res) => {
  res.status(200).json("File has been uploaded");
});

app.use("/api/auth", authRoute);
app.use("/api/users", userRoute);
app.use("/api/posts", postRoute);
app.use("/api/categories", categoryRoute);

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

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

这里是heroku日志--tail

d=POST path="/register" host=bloghiv-back.herokuapp.com request_id=90b09eda-548d-45dd-b99c-ae52f2ee046a fwd="200.126.224.126" dyno=web.1 connect=0ms service=9ms status=404 bytes=392 protocol=https
2021-10-25T15:42:28.073784+00:00 heroku[router]: at=info method=GET path="/static/css/main.3986ef85.chunk.css" host=bloghiv-back.herokuapp.com request_id=8f306df2-0e35-48df-9367-3f6450c6faa8 fwd="200.126.224.126" dyno=web.1 connect=0ms service=1ms 
status=304 bytes=238 protocol=https
2021-10-25T15:42:28.071575+00:00 heroku[router]: at=info method=GET path="/static/js/main.f6840f02.chunk.js.map" host=bloghiv-back.herokuapp.com request_id=72752344-da2c-407f-991e-2596b0074e05 fwd="200.126.224.126" dyno=web.1 connect=0ms service=2ms status=200 bytes=33455 protocol=https
2021-10-25T15:42:28.082929+00:00 heroku[router]: at=info method=GET path="/static/js/2.2d16cffa.chunk.js.map" host=bloghiv-back.herokuapp.com request_id=14798d98-e88f-463d-8a51-d0dbe94dc664 fwd="200.126.224.126" dyno=web.1 connect=0ms service=10ms 
status=200 bytes=967615 protocol=https
2021-10-25T15:42:28.280289+00:00 heroku[router]: at=info method=GET path="/static/css/main.3986ef85.chunk.css.map" host=bloghiv-back.herokuapp.com request_id=b63816f2-7554-4294-97c1-b8fde1e5ef82 fwd="200.126.224.126" dyno=web.1 connect=0ms service=2ms status=200 bytes=25377 protocol=https
2021-10-25T15:42:31.301468+00:00 heroku[router]: at=info method=POST path="/register" host=bloghiv-back.herokuapp.com request_id=a7ed0d2a-d689-4353-b78f-a104ed5d0814 fwd="200.126.224.126" dyno=web.1 connect=0ms service=1ms status=404 bytes=392 protocol=https

当我打开后端 Heroku 部署时,我可以完美地看到我的前端,但我无法注册(发送帖子请求) 这是我的后端控制台的附加图像

编辑:添加路线/auth.js

const router = require("express").Router();
const User = require("../models/User");
const bcrypt = require("bcrypt");

//REGISTER
router.post("/register", async (req, res) => {
  try {
    const salt = await bcrypt.genSalt(10);
    const hashedPass = await bcrypt.hash(req.body.password, salt);
    const newUser = new User({
      username: req.body.username,
      email: req.body.email,
      password: hashedPass,
    });

    const user = await newUser.save();
    res.status(200).json(user);
  } catch (err) {
    res.status(500).json(err);
  }
});

//LOGIN
router.post("/login", async (req, res) => {
  try {
    const user = await User.findOne({ username: req.body.username });
    !user && res.status(400).json("Wrong credentials!");

    const validated = await bcrypt.compare(req.body.password, user.password);
    !validated && res.status(400).json("Wrong credentials!");

    const { password, ...others } = user._doc;
    res.status(200).json(others);
  } catch (err) {
    res.status(500).json(err);
  }
});

module.exports = router;

感谢您的时间!

标签: node.jsheroku

解决方案


根据您附加的控制台图像,您正在向 /register 路径发送 post 请求但是您没有使用 app.use 在中间件中注册 /register,您可以发送您的 ./routes/auth.js 文件吗?如果您的 ./routes/auth.js 文件中有路径 /auth/register 的任何请求处理程序,也许您应该将注册请求发布到 /auth/register 路径。


推荐阅读