错误:发送后无法设置标头。 - NodeJS 和 Express

2024-01-07

我有一个 NodeJS Rest API,其中有一个用户集合,此外我还进行用户短信验证。

这是 POST 的控制器/:id/verification

exports.verification = (req, res) => {

  const id = req.params.id

  return User.find(id)
    .then( user => {

      if (user.code !== req.body.code) {

        res.json({ message: 'Incorrect code' })

        res.sendStatus(500)

        return

      }

      user.isVerified = true

      user.save( error => {

        if (error) {

          res.json({ message: 'Failed to update user' })

          res.sendStatus(500)

          return

        }

        res.json({ user })

        res.sendStatus(200)

      } )

    } )
    .catch( error => {

      res.json({ error })

    } )

}

但问题是当我发帖到/:id/verification我收到这个错误

错误:发送后无法设置标头。 - NodeJS 和 Express

在这一行:

res.json({ user })
res.sendStatus(200)

但我不明白为什么,在此之前我没有发送任何回复。

有人可以解释一下我做错了什么吗?


你同时使用res.json() and res.sendStatus()两者一起,两者都发送response返回,这就是为什么它显示错误Can't set headers after they are sent.

您应该只使用其中之一。

如果您想将状态与 JSON 响应一起发送,您可以尝试以下操作:

res.status(500).json({ message: 'Incorrect code' });

另外,状态200 is default使用时res.send, res.json等等,所以你不需要发送status 200 with res.json()

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

错误:发送后无法设置标头。 - NodeJS 和 Express 的相关文章

  • 填充对象 ID 数组

    我的架构 var playlistSchema new Schema name type String require true videos type mongoose Schema Types ObjectId ref Video co
  • Mongoose Schema“新”关键字

    在声明猫鼬模式时 我注意到使用 mongoose Schema and new mongoose Schema work 有什么区别吗 哪种方式更好 这是同一件事 来自source https github com LearnBoost m
  • HTTP 标头大小写

    我正在处理服务器 它不接受非大写的标头 不幸的是我不能用它做太多事情 var headers headers User Agent Mozilla 5 0 Windows NT 6 1 Win64 x64 AppleWebKit 537 3
  • 在同一个 fd 上多次 createReadStream

    在上一个问题中 https stackoverflow com questions 13932967似乎从 node js 中的文件进行随机访问读取的唯一方法是使用fs createReadStream http nodejs org ap
  • 无法使用IP地址访问WebStorm内部服务器

    我在 PC 上安装了 WebStorm 并启动了 NodeJS 服务器 我可以使用 Chrome 和 Firefox 浏览器访问它localhost但不是我电脑的 IP 地址 我按照给出的指示进行操作here https intellij
  • 在 TFS 上构建想要从 Node.js 测试项目复制可执行文件

    我使用 Node js 工具为量角器测试环境创建了一个 Node js 项目 以在 Team Foundation 服务器上测试 Web 应用程序 我可以在本地创建测试项目并使用调试器运行它 但是 TFS 上的构建不起作用 Log
  • Eslint 不忽略 node_modules 文件夹

    不知何故更新后Babel from 6 to 7 my eslint开始发出这样的警告node modules 所以 根据我的理解node modules文件夹不会被忽略 这就是问题出现的原因 所以 通读eslint docs https
  • 使用核心 Node.js 进行会话管理,无需 Express.js

    如何在核心 Node js 非express js 项目中处理 创建用于服务器端会话管理的中间件 我可以找到基于 Express 的项目的模块 但不能找到核心 Node js 的模块 请向我推荐任何用于非express js 项目的模块或中
  • RSA Java 加密和 Node.js 解密不起作用

    我有一个系统 需要在 javascript 中生成 RSA 密钥对 然后将公钥存储在服务器端的数据库中 作为字符串 然后 Java 中的服务器端将使用存储的公钥对字符串进行加密密钥并将其发送到客户端 客户端将使用私钥解密该字符串 我在客户端
  • 防止 Node.js 中的 SQL 注入

    是否有可能以与 PHP 具有防范 SQL 注入的预准备语句相同的方式防止 Node js 中的 SQL 注入 最好使用模块 如果是这样 怎么办 如果不 有哪些例子这可能会绕过我提供的代码 见下文 一些背景 我正在制作一个 Web 应用程序
  • express 和 socket.io - 声明和启动服务器

    我一直不明白下面的代码是如何等效的 Code 1 var app require express var server require http Server app var io require socket io listen serv
  • 在 Nodejs、pg-promise 中重建连接

    在使用建立主 副本 postgres 连接的场景中pg promise 有没有办法在副本中断的情况下重建这些连接 而不是做process exitCode 1 在通过 initOptions 传递的错误函数中 并在服务启动时仅重建工作连接
  • express.static() 不提供非“/”的路由器路径中公共文件夹中的文件

    Express static 配置 app use express static dirname public 文件结构 public assets js js scripts stylesheets css files Routes co
  • NodeJS:创建 zip,但在磁盘上,而不是在内存中

    我需要创建一个包含大约 1GB 数据的 zip 文件 但该数量将来会增加 最初我用 AdmZip 构建了这个 但由于我们的虚拟机没有大量内存 也不需要它 除了创建这个 zip 文件时 所以我不想扩展 它运行内存不足并崩溃 然后我重建了该过程
  • 有条件包含在翡翠 + Express 中

    如何在玉中使用 if else 语句来 包含 例如 如果我有两个单独的导航栏模板 navbar jade 和 navbar notloggedin jade 我想要做 input type hidden value user user us
  • 如何在 Node 中发送 OAuth 请求

    我想访问node js中的WS REST API 我有oauth consumer key和oauth token和 API 端点 oauth signature method 是 HMAC SHA1 如何在 Node 中发送 OAuth
  • Nodejs mongodb 的 Transaction API `withTransaction` 总是返回 null

    我想从 mongodb 返回某些结果withTransaction功能 但是 我似乎无法返回除 null 之外的任何内容 官方文档中记录了应该返回承诺 https mongodb github io node mongodb native
  • 确定预保存回调中的记录是否“是新的”

    有没有办法在猫鼬模型模式的预保存回调中找出记录是否 是新的 尚未保存 是的 有一个isNew http mongoosejs com docs api html document Document isNew模型实例上指示这一点的布尔属性
  • Node.js -Firebase 服务帐户私钥无法解析

    I use env我的 app js 文件中的变量用于访问密钥 一切都工作正常 直到我下载了一个新的Firebase Service Account Private Key 当我用新值替换旧值时 我无法再访问该密钥 因为terminal当我
  • 递归process.nextTick警告

    作为我的应用程序的一部分 我有以下代码行 process nextTick function pre populate cache with all users console log scanning users table in ord

随机推荐

  • 恢复 Git 存储库中已删除的文件夹

    我已经删除了文件夹中的所有内容 并且该文件夹为空 我的远程仓库中仍然有一份副本 但是当我做了一个git pull它没有放回已删除的文件不是应该这样做吗 所以我做了一些研究 发现你可以通过执行以下操作来恢复文件git checkout
  • 一次读取每个字符 - C

    对于下面的question https users cs cf ac uk Dave Marshall C node7 html SECTION00730000000000000000 练习 12336 从程序的标准输入中一次读取一个字符的
  • 将整数转换为随机但确定性可重复的选择

    如何将无符号整数 表示用户 ID 转换为看起来随机但实际上是确定性可重复的选择 必须以相等的概率选择该选项 无论输入整数的分布如何 例如 如果我有 3 个选择 即 0 1 2 例如 用户ID 123可以总是被随机分配选择2 而用户ID 23
  • git 日志格式中可选的缩进换行符

    我一直在摆弄git一些的别名log命令 我已经拥有了大部分我想要的东西 信用在这里 https stackoverflow com a 9074343 241211 但我在一件事情上遇到了麻烦 当我打电话时 git log graph fo
  • Android JNI - 调用 AttachCurrentThread 而不使用 DetachCurrentThread

    我一直在阅读有关 JNI 的内容 似乎无法弄清楚如果线程启动 gt 调用 AttachCurrentThread gt 进行一些 JNI 调用 gt 线程退出会发生什么 理想情况下 我们应该在线程退出之前调用 DetachCurrentTh
  • 通过C#发送截图

    我通过该代码捕获屏幕截图来保存 Graphics Grf Bitmap Ekran new Bitmap Screen PrimaryScreen Bounds Width Screen PrimaryScreen Bounds Heigh
  • Java中的双重比较技巧

    C 允许您将两个整数比较合并为一个以进行范围检查 例如 unsigned X lt unsigned Upper 当 0 lt X lt Upper Java 语言没有无符号类型 您是否找到了一种方法来获得相同的效果 使用单个比较并且没有太
  • 如何运行 OCaml + Core 脚本?

    我正在尝试 Real World OCaml 这本书 它讨论了安装 OPAM 然后是 OCaml 和 Jane Street Core 我按照书中的说明正确加载了 utop 以便它自动加载 Core 没有 Core 我可以简单地运行通用 O
  • 坚持将 GCP 项目转移到组织

    我正在尝试将 GCP 项目 在私人帐户上 移至我管理的 GCP 组织 我知道我必须拥有正确的 IAM 权利 我相信我也这样做 我是项目中的所有者 文件夹管理员 组织管理员 项目删除者和项目移动者 我也是要搬迁项目的项目所有者和项目搬家者 但
  • “已杀:9”错误是什么意思?

    我正在编写一个程序来查找给定字符串的所有子集 然而 它会导致一个名为的错误Killed 9 class Strings object def init self string self list1 self string string de
  • Python 2.7 中枚举不可迭代

    from enum import Enum class Shake Enum order vanilla chocolate cookies mint only needed in 2 x vanilla 7 chocolate 4 coo
  • Javascript(动态)插入数组,然后将所有元素移到+1下面

    没有真正找到 Javascript 的解决方案 我需要的 我想将一个元素插入数组 但并不真正覆盖该元素 而是 动态 插入 因此插入元素 然后将其下面的所有元素移动 1 索引 例如 I have an array 14S 16S 19S I
  • Vim 配色方案更改

    我很难改变我的配色方案 我已经打开 vimrc 和 usr share vim vimrc 并添加 colorscheme desert 没事了 我注意到配色方案在这里 usr share vim vim72 colors desert v
  • Twilio 错误 - 12300 - 仅有时内容类型无效

    我有一个与数字绑定的 C NET WebApi 端点 当该号码收到短信时 它会通过 webhook 转发到我的 API 有时 并非总是 我的调试器中会出现以下错误 错误 12300 内容类型无效 Twilio 无法处理所提供 URL 的内容
  • Vue 3 中的自定义指令

    我正在尝试创建一个自定义指令来在单击元素时执行函数 我无法让它工作 我查看了自定义指令的文档 甚至直接从那里复制示例也不起作用 我正在使用单个文件模板和本地指令 这是模板
  • 不满足特征绑定“T: std::fmt::Display”

    我正在编写一个基本的二叉树结构 我想显示一个节点 Rust 似乎无法显示泛型类型 我收到此错误 error E0277 the trait bound T std fmt Display is not satisfied gt src ma
  • 在 Java 中:为什么某些 Stream 方法采用 int 而不是 byte 甚至 char?

    为什么有些方法会这样写bytes chars到流需要int代替byte char 有人告诉我如果出现以下情况int 而不是char 因为char在java中只有2个字节长度 这对于大多数已经使用的字符符号来说是可以的 但是对于某些字符符号
  • 如何根据值对 pandas 系列进行子集化?

    我有一个 pandas 系列对象 我想根据一个值对其进行子集化 例如 s pd Series 1 2 3 4 5 6 7 8 9 10 我如何对其进行子集化 以便获得仅包含大于或小于 x 值的元素的系列对象 我相信你指的是布尔索引 http
  • Outlook 365 加载项仅出现在 Outlook 2013 客户端中

    我在 Outlook 2016 中显示我的加载项时遇到问题 我将其开发为 Office365 加载项 它在 Outlook 2013 中的工作方式就像一个超级按钮 但当时我想在 Outlook 2016 中测试它 但它没有显示在 Offic
  • 错误:发送后无法设置标头。 - NodeJS 和 Express

    我有一个 NodeJS Rest API 其中有一个用户集合 此外我还进行用户短信验证 这是 POST 的控制器 id verification exports verification req res gt const id req pa