سلام. تازه کار در NodeJS هستم و هر روز با مشکلات جدیدتری روبه رو میشم که با کمک شما دارم میرم جلو
کلیت مشکل من :
یه فرم عضویت ساختم و یه گوگل ریکپچا انداختم داخلش
این روتر مربوط میشه به زمانی که فرم داره ارسال میشه
router.post('/register',registerValidator.handel(),AuthController.registerProcess)
محتویات متد هندل فایل registerValidator هست:
handel(req,res){
return [
check('name').isLength({min : 5}).withMessage("The name must be at least 5 characters long"),
check('email').isEmail().withMessage("The Entered Email Is Invalid "),
check('password').isLength({min:6}).withMessage("The password must be at least 6 characters long")
];
}
محتویات متد registerProcess هم هست:
registerProcess(req, res) {
this.validationRecaptch(req, res)
.then(result => validationResult(req))
.then(result => {
if (!result.isEmpty()) {
let messages = [];
let erros = result.array();
erros.map(item => {
messages.push(item.msg);
})
req.flash('errors', messages);
res.redirect('/auth/register');
}
})
.catch((err) => {
req.flash('errors', [err]);
res.redirect('/auth/register');
});
console.log('successfuly');
res.redirect('/');
}
و در آخر متد validationRecaptch هم محتویات زیر رو داره
validationRecaptch(req, res) {
return new Promise((resolve, reject) => {
this.recaptcha.verify(req, (err) => {
if (err) {
reject(err);
} else {
reject(false);
}
})
})
}
اما کد من ایراد داره و کار نمی کنه! وقتی فرم رو ارسال می کنم خطای زیر رو میگیرم :((
successfuly
(node:12182) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:470:11)
at ServerResponse.header (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:771:10)
at ServerResponse.location (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:888:15)
at ServerResponse.redirect (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:926:18)
at validationRecaptch.then.then.catch (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/app/http/controller/AuthController.js:38:21)
at process._tickCallback (internal/process/next_tick.js:68:7)
(node:12182) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:12182) [DEP0018] 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.
و اصلا داخل catch نمیره در صورتی که باید بره و بیاد بیرون چیزی به ذهنتون میرسه منو نجات بدید؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟