javascript - 如何在 Express/Nodejs 中捕获 404 错误?

标签 javascript node.js express

<分区>

var express = require('express');
var path = require('path');

var app = express();
app.use(express.static(path.join(__dirname, 'public')));

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

我很困惑什么时候捕获 404 错误,什么时候不捕获? 我希望在输入正确的请求路径时不会捕获 404 错误时实现目标,否则错误的请求路径将会。

最佳答案

在您的路由文件夹(如果您使用的是 express-gen)或其他任何地方创建一个使用 express.router() 的 Node 模块,如下所示

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

var dishRouter = express.Router();

dishRouter.use(bodyParser.json());

然后处理你的请求,例如:

dishRouter.route('/')
.get(function(req, res, next) {
    res.end('Will send all the dishes to you!');
})

.post(function(req, res, next) {
    res.end('Will add the dish: ' + req.body.name + ' with details: ' + req.body.description);
});

并在你的 app.js 或你运行的主文件中使用它:

var express = require('express');
var path = require('path');
var dishRouter=require('./routes/dishRouter');

var app = express();
app.use(express.static(path.join(__dirname, 'public')));

app.use('/dishes',dishRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  res.redirect('/fail');
  next(err);
});

所以这将做的是,它将处理来自客户端的 get 和 post 请求,对 URI /dishes 和其他请求,它将抛出错误 404 并发送到 /fail 路径。

关于javascript - 如何在 Express/Nodejs 中捕获 404 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42604165/

相关文章:

node.js - Express 函数中的 "res"和 "req"参数是什么?

node.js - ExpressJS GET 重定向

node.js - SPA+API OAuth流程,用什么?

javascript - 添加对将文本转换为 html 的支持

javascript - jQuery 全局化。将货币单位作为 C 格式的参数传递

javascript - 在使用配置文件而不是环境变量的 Node 应用程序中,应将 Azure 存储连接字符串放在何处?

javascript - create-react-app 总是抛出 babel 错误

node.js - 您应该向用户发送数据库错误吗?

javascript - Node js 中是否有类似 Angular $watch 的东西

javascript - Bootstrap : Multiple pages (divs) and navbar