我有Express个应用程序,我看到在一些模块中,res.end()在请求处理程序的末尾被调用(在res.sendres.json之后),而在其他模块中,它没有被调用.

例如:

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

或者:

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

这两种情况都有效,但当我运行许多请求时,我担心会出现泄漏或文件描述符耗尽之类的情况.哪一个"更正确"?

推荐答案

你的问题的答案是否定的.如果你打res.send(),你不必打res.end().res.send()给你打res.end().

摘自/lib/response.js,下面是res.send()函数的结尾:

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}

Node.js相关问答推荐

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

在 NodeJS 中使用 post 时出现错误 500TypeError: 无法解构 'req.body' 的属性 'name',因为它未定义

如何在 Firestore 函数上使用类型模型来获取字段值

Gulp 能否向 Docker 发出增量构建的第一次迭代完成的信号?

登录用户并获取他们的个人资料

在 Node JS 中使用 url 链接而不是文件路径

为什么我的 Cypress Post 请求的请求正文是空的?

当我使用 uuid 代码意外崩溃,然后工作正常?

使 pm2 登录到控制台

运行摩卡+伊斯坦布尔+通天塔

如何使用 gulp-uglify 缩小 ES6 函数?

ChildProcess 关闭、退出事件之间的区别

如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?

npm install 给出警告,npm audit fix 不起作用

名称类型为 mongoose 的字段

Node.js 17.0.1 Gatsby 错误-数字信封 routine ::不支持 ... ERR_OSSL_EVP_UNSUPPORTED

使用 Node.js 和 Express 进行简单的 API 调用

node.js 找不到模块mongodb

mongoose 填充与对象嵌套

我无法全局安装 nodemon,nodemon无法识别