如何仅在缺失的路线上将 Express.js 转至 404?

2024-03-07

目前,我的所有其他路线下方有以下内容:

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

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


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

看一下第二个例子通过路线控制 http://expressjs.com/guide.html#passing-route%20control:

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);
    }
});

它记录在错误处理 http://expressjs.com/guide/error-handling.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何仅在缺失的路线上将 Express.js 转至 404? 的相关文章

  • 为什么“true && () => {}”会产生“Uncaught SyntaxError:格式错误的箭头函数参数列表”? [复制]

    这个问题在这里已经有答案了 下面的代码 执行时 true gt yields Uncaught SyntaxError Malformed arrow function parameter list Why 编辑 我知道将函数包装在括号中是
  • 使用 Electron 应用程序打包 Keytar

    我正在使用电子构建器 16 6 2 来打包我的电子应用程序 其中包括 keytar 3 0 2 作为产品依赖项 package json 文件包括 scripts postinstall install app deps compile d
  • socket.io 自动断开套接字

    当我在电子中运行 socket io 时 我不断在开发者控制台中收到此错误 engine io client socket probe transport websocket failed because of error transpor
  • 获取语​​音通道的用户数

    我正在重写我的音乐部分朋友不和谐机器人 https top gg bot 629799045954797609 我试图弄清楚如何获取执行命令的人的语音通道中的用户数量 我到处都找过 但似乎找不到它或它的用法 现在我正在使用以下内容 modu
  • 如何在 NextJS 中记录所有路由

    我对 NextJS 非常陌生 我目前有一个非常简单的应用程序 它提供少量页面 如果路由不存在 则返回 404 页面 我想记录每个请求 包括不存在的页面并返回 404 页面 我正在 docker 容器内运行该应用程序 或者我希望将日志写入标准
  • 如何在Sequelize中配置一对多关系?

    我目前正在使用 Express 和 Sequelize MySQL 想知道解决这个问题的最佳方法是什么 如果这是一个基本问题 我很抱歉 因为我对 Sequelize 甚至 SQL 数据库都很陌生 我有一个模型User像这样 export d
  • 我什么时候应该使用yield,什么时候应该使用yield* 与Koa.js

    浏览 koa 示例 文档和中间件 我注意到这两种形式yield我注意到正在使用中没有任何特别的差异 最极端的情况是在 koa mount 中 其中示例代码 https github com koajs mount mounting midd
  • 从子文件夹运行的 Node.js 服务器

    所以我参加 Node js 聚会已经很晚了 主要是没人邀请我 Thanks 也就是说 我开始解决这个问题 我有 ASP 经典背景 所以有一些东西我还没有理解 如果有人能指出我正确的方向 那就太好了 提前致谢 因此 我正在以标准方式设置服务器
  • 错误 [ERR_UNSUPPORTED_DIR_IMPORT]:尝试在本地启动 Nodejs 应用程序时导入目录

    我在尝试将我的应用程序部署到 Heroku 时陷入了一个循环 我的进口声明 例如import cors from cors 由于 无法在 Common JS 中加载 ES6 模块 错误 似乎阻止了应用程序在生产环境中启动 在本地运行得很好
  • npm i 导致许多 ERESOLVE 问题

    我收到此错误npm i npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree npm ERR npm ERR Found email protect
  • ng 不被识别为内部或外部命令。詹金斯 + 角度 CLI

    我正在尝试为 Angular CLI 项目设置 Jenkins 我已经在 J enkins 服务器上以特定用户帐户安装了节点和 Angular Cli 如果我在服务器上打开命令提示符并执行以下命令来验证它们是否正确安装 结果如下 我已经使用
  • 对数组进行分组并获取计数[重复]

    这个问题在这里已经有答案了 假设我有这样的数组 foo bar foo bar bar bar zoom 我想将其分组 这样我就可以得到这样的计数 foo 2 bar 4 zoom 1 有没有一个实用程序可以做到这一点 只需使用该功能Arr
  • MongoDB $lookup 对一个文档的对象数组进行查找

    我在网上搜索过 但找不到与我的情况相符的内容 情况是这样的 我正在使用聚合将一个集合和来自另一个集合的一个文档组合在一起 restaurants aggregate match id in idList lookup from tags l
  • 如何从node js发送json数据到html页面

    我已经使用 Node js Express 从 facebook 获取了一系列 json 数据 现在我想将数据发送到 html 页面 但我不知道如何发送数据并在 html 中对数据进行编码 如果您在 node js 中使用 Express
  • 如何在 Express.js 中设置身份验证中间件

    我已经设置了一个网络应用程序 其中一些内部页面需要登录 我使用 Node 和 Express js 来设置服务器并控制路由和身份验证工作正常 我在 a 中提出了 zanko 建议与同一应用程序相关的问题 https stackoverflo
  • NodeJS:TCP套接字服务器仅在第一次返回数据

    我正在尝试在 node js 中编写一个小型中继脚本 用于侦听本地套接字上传入的 TCP 连接 当它收到连接时 将流量转发给第三方 它还必须从该第三方获取任何返回的数据并将其发送回原始本地套接字 我试过类似的代码http delog wor
  • 在沙盒中的服务器上运行不受信任的 JavaScript 代码

    我似乎不知道如何设置节点沙箱 它可以安全地运行不受信任的代码 并允许用户通过api调用与程序交互 系统输入和输出 我正在尝试在浏览器中设置一个控制台 以便用户从服务器运行自己的代码 是否有任何节点包支持此功能 或者我是否需要编写自己的节点虚
  • Express.js 路由错误:发送后无法设置标头

    我不太确定为什么会出现此错误 它是一个基于express js 构建的简单 API 能够添加和删除帖子 当我触发删除路由器时发生错误 我读过 当有两个回调时 通常会发生错误 但是 我似乎找不到任何双重回调 http outgoing js
  • 从mongoDB和Nodejs获取数据:toArray不是函数错误[重复]

    这个问题在这里已经有答案了 我有以下代码 var user User find limit 1 skip 10 toArray 但我收到错误消息toArray不是一个函数 但如果我执行以下操作 我将获得所有记录 User find func
  • Node.JS Web 服务器中的安全性

    所以 我正在学习 Node JS 到目前为止我很喜欢它 我已经有几个项目在工作了 我想我可以在其中使用nodejs 不过 我担心安全问题 如果我使用 Node JS http 模块编写自定义 Web 服务器 我是否可能非常容易受到攻击 Ap

随机推荐