【问题标题】:Express router route getting status 404 on PostmanExpress 路由器路由在 Postman 上获得状态 404
【发布时间】:2021-07-27 08:45:21
【问题描述】:

我正在尝试通过 Postman 测试通过快递完成的路线,但尽管我有另一条可行的路线,但我一直收到状态 404。

我不会将代码发布到可以工作的路线上,因为这里写了很多代码并且似乎没有必要。

App.js

var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");
var cors = require("cors");
require("dotenv").config();
var bodyparser = require("body-parser")

var indexRouter = require("./routes/index");
var usersRouter = require("./routes/users");
var commentsRouter = require("./routes/comments")
var authRouter = require("./routes/auth")
var app = express();

var corsOption = {
  origin: true,
  methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
  credentials: true,
  exposedHeaders: ['x-auth-token']
};

// view engine setup
app.use(cors(corsOption));
app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use(bodyparser.json());
app.use(bodyparser.urlencoded({ extended: false }));

app.use(function (req, res, next) {
  if (req.originalUrl && req.originalUrl.split("/").pop() === "favicon.ico") {
    return res.sendStatus(204);
  }

  return next();
});

app.use("/", indexRouter);
app.use("/users", usersRouter);
app.use("/comments", commentsRouter)
app.use("/auth", authRouter)

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render("error");
});

module.exports = app;

评论路线

var express = require("express");
var router = express.Router();


//Get comment
router.get("/", function (req, res, next) {
    return res.status(200)
} )

/* Post new comment. */
router.post("/new", function (req, res, next) {
 return res.status(200)

});

//Update comments
router.put("/update", function (req, res, next) {
    
})

module.exports = router;

索引/路由运行良好,但 /auth 和 /cmets 却不行。

我正在尝试使用 GET 访问 http://localhost:3000/cmets

【问题讨论】:

  • 你做了什么调试?如果你在你的 cmets router.get("/", ...) 里面放了一个console.log(),它会记录吗?你的app.use(function (req, res, next) { ...}); 记录了吗?这是基本调试,用于查看请求在哪里处理或未在哪里处理。您还可以打开 Express 路由调试,查看 Express 对请求的具体操作。
  • 仅供参考,此处描述了您自己诊断此问题的快速路由调试:expressjs.com/en/guide/debugging.html

标签: javascript node.js express postman router


【解决方案1】:

.status() 不会结束响应过程。您需要通过链接其他方法(例如.end().send())来显式结束它。

用类似这样的东西更新/comments的GET路由。

router.get("/", function (req, res, next) {
    return res.status(200).end();
})

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2016-07-12
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多