当前位置: 首页 > 知识库问答 >
问题:

Async/await mvc express在处理错误时遇到问题。捕获()

金珂
2023-03-14

我试图使用express中间件处理错误,在这些行中,我有以下错误

user.js控制器

app.post('/create', async (req, res, next) => {
  const data = await User.create(req.body)
    .catch((err) => next(err));
  res.status(201).json({ ok: true, ...data });
});

使用者js模型

UserSchema.statics.create = async function createUser(data) {
  delete data.role;
  const user = await new this(data).save();
  return { token: user.newToken(), user };
};

app.js

app.use((err, req, res, next) => {
  res.status(err.code || 400);
  res.json({ ok: false, err: err.message });
});

错误

(节点:3304)未经处理的PromisejectionWarning:错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头。。。

(节点:3304)UnhandledPromiseRejtionWarning:未处理的promise拒绝。这个错误要么是由于抛出一个没有捕获块的异步函数,要么是由于拒绝了一个没有用. cat()处理的promise。若要在未处理的promise拒绝时终止节点进程,请使用CLI标志--un处理-拒绝=严格(参见https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝id: 9)

节点: 3304)[DEP0018]DeprecationWarning:未处理的promise拒绝被弃用。将来,未处理的promise拒绝将以非零退出代码终止Node.js进程。

之后在用户中使用try/catch进行验证。js controller我没有任何错误,但在express文档中不建议使用try/catch。

app.post('/create', async (req, res, next) => {
  try {
    const data = await User.create(req.body)
    res.status(201).json({ ok: true, ...data });
  } catch (err) {
    next(err);
  }
});

有什么想法吗?

共有1个答案

公冶峰
2023-03-14

您可以使用waitthen/catch

app.post('/create', async (req, res, next) => {
  User.create(req.body)
    .then(data => {
       res.status(201).json({ ok: true, ...data });
     })
    .catch((err) => next(err));
});
 类似资料:
  • 我正在尝试从何处运行此源代码https://github.com/kishancs2020/TicketBookingServiceJunitTestingGithub在我的Jenkins中查看了在Jenkins文件中创建的管道源代码。 我已经更新了maven,java版本来修复它,但错误仍然是一样的。我也通过了这个链接http://cwiki.apache.org/confluence/disp

  • 我正在写一个新的家长pom.xml 下面是我的孩子pom 下面是我在构建过程中遇到的错误

  • 我创建并尝试使用构建项目,但它不工作。不是这个项目,我试着构建我的所有项目,但在我的ubuntu笔记本电脑上不工作 [信息]扫描项目...从中心下载:https://repo . maven . Apache . org/maven 2/org/spring framework/boot/spring-boot-starter-parent/2 . 6 . 11/spring-boot-start

  • 我对口水很陌生。 我正在开发一个应用程序,其中我的drools引擎每秒钟将获得一系列事件。我需要查看过去10秒内所有事件的属性值是否低于10,如果条件为真,我必须进行一些处理。这里是我尝试的示例代码,请帮助我理解和解决问题。 我的规则文件.... 和主类

  • 我想开始一个新泽西州的项目,但因为pom,我第一步就失败了。xml显示一些错误,无法生成项目。错误: 这是我的pom。xml: 你能帮我解决这个问题吗?我尝试了很多配置,但主题都不起作用。我不知道我的IDE配置(IntelliJ)是否有问题。非常感谢。