最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - TypeError: next is not a function - Stack Overflow

programmeradmin5浏览0评论

I'm running a Node.js-server and trying to test this Rest API that I made with Express. It's linked up to MongoDB using Mongoose.

I'm testing the individual routes using Postman and I get an error when trying to send a PUT-request to this route:

// PUT /meetings/:id
// Route for editing a specific meeting
router.put("/:id", function(req, res, next) {
    req.meeting.update(req.date, function(err, result) {
      if(err) return next(err);
      res.json(result);
    });
});

The error retrieved is this:

events.js:141
      throw er; // Unhandled 'error' event
      ^

TypeError: next is not a function

I cannot figure out where exactly this is ing from. I'm using the router.params-method to specify how the :id-parameter should be handled like this:

router.param("id", function(req, res, id, next) {
  Meeting.findById(id, function(err, meeting) {
    if (err) return next(err);
    if (!meeting) {
      err = new Error("Meeting not found");
      err.status = 404;
      return next(err);
    }
    req.meeting = meeting;
    return next();
  });
});

I'm running a Node.js-server and trying to test this Rest API that I made with Express. It's linked up to MongoDB using Mongoose.

I'm testing the individual routes using Postman and I get an error when trying to send a PUT-request to this route:

// PUT /meetings/:id
// Route for editing a specific meeting
router.put("/:id", function(req, res, next) {
    req.meeting.update(req.date, function(err, result) {
      if(err) return next(err);
      res.json(result);
    });
});

The error retrieved is this:

events.js:141
      throw er; // Unhandled 'error' event
      ^

TypeError: next is not a function

I cannot figure out where exactly this is ing from. I'm using the router.params-method to specify how the :id-parameter should be handled like this:

router.param("id", function(req, res, id, next) {
  Meeting.findById(id, function(err, meeting) {
    if (err) return next(err);
    if (!meeting) {
      err = new Error("Meeting not found");
      err.status = 404;
      return next(err);
    }
    req.meeting = meeting;
    return next();
  });
});
Share Improve this question asked Mar 19, 2017 at 13:05 SudokuNinjaSudokuNinja 4391 gold badge6 silver badges16 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 9

So I figured it out. It was a much smaller error than I thought. I had the parameters to the callback-function in my router.param-method in the wrong sequence. The next-keyword should be where id was. This code fixed the problem:

router.param("id", function(req, res, next, id) {
  Meeting.findById(id, function(err, meeting) {
    if (err) return next(err);
    if (!meeting) {
      err = new Error("Meeting not found");
      err.status = 404;
      return next(err);
    }
    req.meeting = meeting;
    return next();
  });
});
发布评论

评论列表(0)

  1. 暂无评论