当前位置: 首页 > 面试题库 >

如何仅在缺少的路线上将Express.js升级为404?

景靖琪
2023-03-14
问题内容

目前,我的其他所有路线都位于以下位置:

app.get('*', function(req, res){
  console.log('404ing');
  res.render('404');
});

并且根据日志,即使上面的路线匹配,也会被触发。我怎样才能让它只有在没有匹配的情况下才会触发?


问题答案:

您只需要将其放在所有路线的末尾即可。

看一下传递路径控制的第二个示例:

var express = require('express')
  , app = express.createServer();

var users = [{ name: 'tj' }];

app.all('/user/:id/:op?', function(req, res, next){
  req.user = users[req.params.id];
  if (req.user) {
    next();
  } else {
    next(new Error('cannot find user ' + req.params.id));
  }
});

app.get('/user/:id', function(req, res){
  res.send('viewing ' + req.user.name);
});

app.get('/user/:id/edit', function(req, res){
  res.send('editing ' + req.user.name);
});

app.put('/user/:id', function(req, res){
  res.send('updating ' + req.user.name);
});

app.get('*', function(req, res){
  res.send('what???', 404);
});

app.listen(3000);

或者,您什么也不做,因为所有不匹配的路由都将生成404。然后您可以使用以下代码显示正确的模板:

app.error(function(err, req, res, next){
    if (err instanceof NotFound) {
        res.render('404.jade');
    } else {
        next(err);
    }
});

在错误处理中进行了记录。



 类似资料:
  • 一、本功能说明 本节提供了在线升级网站程序以及网站核心文件效验功能 二、子功能导航 1.在线升级 2.文件效验 三、功能详解 1.在线升级 1).如何进入本功能 导航栏 选择扩展 -> 菜单栏 选择在线升级 2).界面解释 进入后程序会自动获取是否有新版本,如果没有则显示如下界面 如果有新的版本则显示如下界面 这时候只要点击开始升级程序就会自动开始下载相应的补丁包,然后自动安装! 注意事项:   

  • 一、本功能说明 本节提供了在线升级网站程序以及网站核心文件效验功能 二、子功能导航 1.在线升级 2.文件效验 三、功能详解 1.在线升级 1).如何进入本功能 导航栏 选择扩展 -> 菜单栏 选择在线升级 2).界面解释 进入后程序会自动获取是否有新版本,如果没有则显示如下界面 如果有新的版本则显示如下界面 这时候只要点击开始升级程序就会自动开始下载相应的补丁包,然后自动安装! 注意事项:   

  • 唯一需要手动更改的包是到,我使用以下命令进行了更改: 然后,我将的所有导入语句更改为。 我现在在构建应用程序时收到以下错误:

  • 我已经在Windows上运行了Node.jsV0.8.0。我可以运行最新的安装程序将其升级到V0.8.4吗?我担心它会破坏我机器上现有的第三方模块。

  • 1. 缘由 公司有一个项目,需要用到websocket,所谓websocket是基于tcp/ip的协议,它跟http协议是同等级的。它解决的问题是长轮循的资源消耗问题。也就是用它做类似长轮循的应用时,因为本身协议的支持,资源消耗是较低的。类似的应用可以是聊天室,通知系统,股票实时更新等。具体的我们不再细说。由于我们项目是部署在nginx上的,用的ruby on rails开发的,使用的gem是ac

  • 我们正在尝试在 WSO2 BPS 中将 TLS 1.0 升级到 TLS 1.2 版本。以下过程使用此链接升级 TLS 最新版本 来自 WSO2 和我们的 JAVA 应用程序的参考链接在 JDK 1.8 中运行。 > 打开<code> 删除了sslProtocol=“TLS”属性,并将其替换为sslEnabledProtocols=“TLSv1.2”,如下所示。 Wso2BPMN, 那么,TLSv1