gpt4 book ai didi

javascript - Express.js 中的 UnhandledPromiseRejection

转载 作者:行者123 更新时间:2023-12-03 04:54:04 27 4
gpt4 key购买 nike

我希望我能为这个问题提供足够的信息,但是当我故意想要捕获错误时,我无法理解为什么我的回调函数返回 Unhandled Promise Rejection:

(node:3144) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Can't set headers after they are sent.
(node:3144) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我在路由中调用该函数:

router.route("/home/create")
.post(Authorization, function(req, res) {

CreateSnippetResource(req, function(err) {

if (err) {
console.log(err.message)
}

res.redirect("/home")
});
});

以及“CreateSnippetResource”函数:

(function() {

let User = require("../../Models/User");
let Snippet = require("../../Models/Snippet");

/**
* Create a new snippet and save it to database
* @param request
* @param callback
*/
module.exports = function(request, callback) {

callback(
User.findOne({ user: request.session.Auth.username }, function(err, user) {
if (err || user === null) {
callback("User not found")
}

var snippet = new Snippet({
title: request.body.snippetName.split(".").shift(),
fileName: "." + request.body.snippetName.split(".").pop(),
postedBy: user._id,
snippet: [{
text: " "
}]
});

snippet.save().then().catch(function(err) {

callback(err)
});
}))
};
}());

我正在尝试处理未输入标题时的错误。我的模式模块中有一个验证器,如下所示:

SnippetSchema.path("title").validate(function(title) {
return title.length > 0;
}, "The title is empty");

事实上,回调CreateSnippetResource返回的错误消息是标题为空。那么我怎么会收到这个 Promise-error 呢?

我假设它与我处理 snippet.save() 的方式有关,但看不出它是如何处理的。你能帮忙吗?

最佳答案

Why does my callback function return Unhandled Promise Rejection when I on purpose want to catch the error?

当您的回调抛出另一个异常时,就会发生这种情况。这将拒绝 .catch(…) 调用返回的 promise ,并且该拒绝无法得到处理。

关于javascript - Express.js 中的 UnhandledPromiseRejection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com