【问题标题】:How to handle "Cannot <METHOD> <ROUTE>" in Express?如何在 Express 中处理“Cannot <METHOD> <ROUTE>”?
【发布时间】:2015-07-06 06:54:10
【问题描述】:

作为一个最小示例,请考虑以下代码:

var express = require('express');
var bodyparser = require('body-parser');

var app = express();
app.use(bodyparser.json());
app.use(errorhandler);

function errorhandler(err, req, res, next) {
    res.setHeader('Content-Length', 0);
    res.status(500).end();
}

app.post('/example', function(req, res) {
    res.setHeader('Content-Length', 0);
    res.status(200).end();
});

var server = app.listen(3000, function() {
    console.log('server listening on http://%s:%s ...', server.address().address, server.address().port);
});

例如,当我现在在/example 上尝试PUT 时,我会收到带有404 状态代码的Cannot PUT /example 消息。我未声明的所有其他路线和方法也是如此。我的错误处理程序只会在路由或正文解析器本身的实际错误上被调用。

有办法自己处理吗?我正在使用 Express4。

【问题讨论】:

    标签: javascript node.js express express-4


    【解决方案1】:

    在所有其他使用/get/post/etc之后定义一个没有路由的通用处理程序:

    app.use(function(req, res, next){
      res.status(404);
      res.render(...);
    }
    

    【讨论】:

    • 按预期工作。谢谢你。不过,我对我的错误处理程序没有处理这个问题感到有些困惑,即使放在最后也是如此。
    • 没关系,我找到了:express doc on error handling 显然是用 4 个而不是 3 个参数来处理错误。我猜我错过了。
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2022-12-05
    • 2021-04-20
    • 2021-11-26
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多