الحصول على الخطأ التالي:
(node:1475) UnhandledPromiseRejectionWarning: Error: Bad Request
at Request.http [as _callback] (node_modules/@sendgrid/client/src/classes/client.js:124:25)
at Request.self.callback (node_modules/request/request.js:185:22)
at Request.emit (events.js:182:13)
at Request.<anonymous> (node_modules/request/request.js:1161:10)
at Request.emit (events.js:182:13)
at IncomingMessage.<anonymous> (node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:273:13)
at IncomingMessage.emit (events.js:187:15)
at endReadableNT (_stream_readable.js:1094:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
(node:1475) 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:1475) [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.
الكود الخاص بي في Express و node كجزء من تطبيق nextjs:
const express = require('express')
const next = require('next')
const bodyParser = require('body-parser')
const sgMail = require('@sendgrid/mail');
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
sgMail.setApiKey(myKey);
const send = ({ email, name, text }) => {
const message = {
to: '[email protected]',
from: email,
subject: 'New message from',
text: text,
}
return new Promise((resolve, reject) => {
sgMail.send(message, (error, info) =>
error ? reject(error) : resolve(info)
)
})
}
app.prepare().then(() => {
const server = express()
server.use(bodyParser.json())
server.get('*', (req, res) => {
return handle(req, res)
})
server.post('/api/contact', (req, res) => {
const { email, name, message } = req.body
send(email, name, message)
res.send('success')
})
server.listen(3000, (err) => {
if (err) throw err
console.log('> Read on http://localhost:3000')
})
})
@ AWR14 ،
كنت أواجه مشكلة مماثلة ، وقمت بإصلاحها من خلال التأكد من أن حقل البريد الإلكتروني from
بريد إلكتروني صالح
hkadyanji ، (وأي شخص آخر قادم) من الغريب أنني اكتشفت أنه إذا لم أقدم جميع الحقول فسأحصل على الخطأ - بدلاً من تعيين حقل على "" ، قمت بتعيين إلى "" (مسافة داخل علامتي الاقتباس) وقد حلت مشكلتي - أجد أن هذا غريبًا تمامًا ولكن الإصلاح أفضل من كسره. :) إذا كان لدى أي شخص أي ملاحظات / نظرة ثاقبة ، فأنا حريص على معرفة ...
في الإنصاف ، لم أختبر الحقول إلى: ومن: للسماح بالفراغات لأنها عادةً ما يكون لها قيمة في تطبيقي ، لذا لم أر الحاجة. سأبث على الجانب الآمن وأتأكد فقط من أن أي حقل مفقود به مساحة على الأقل حتى يثبت العكس في إصدار مستقبلي. ولكن مرة أخرى ، من أنا أمزح؟ ليس من المحتمل أن أزور هذا الرمز مرة أخرى حتى ينكسر شيء آخر ... لول
أنا أستخدم "@ sendgrid / mail": "^ 6.4.0"
هل تم حل المشكلة ، أواجه نفس الخطأ ولكن في سياق مختلف للبوت.
إنه يعمل بشكل جيد في bot emulator ولكن بمجرد أن أنشر على azure ، أحصل على هذا الخطأ.
BotFrameworkAdapter.processActivity (): خطأ 500 - خطأ: طلب غير صالح
(العقدة: 17240) UnhandledPromiseRejectionWarning: خطأ: خطأ: طلب غير صالح
لقد تلقيت نفس التحذير ، ولكن كان خطئي هو الذي يحتوي على مشكلة إملائية ، فبدلاً من text
، قمت بكتابته test
.
لجعله يعمل مرة أخرى ، تأكد من صلاحية البريد الإلكتروني والمفاتيح.
const msg = {
to: '[email protected]',
from: '[email protected]',
subject: 'Hello world',
text: 'Hello plain world!',
html: '<p>Hello HTML world!</p>',
};
في حالتي ، يحدث هذا الخطأ لأنني لم أستخدم الانتظار قبل send
api مما أدى إلى عدم اكتشاف الخطأ.
وسبب الخطأ هو to
و cc
لدي بعض التقاطع。
إزالة رسائل البريد الإلكتروني المتكررة في to
و cc
قد تحل مشكلتك :)
هناك مشكلتان هنا: تقديم طلبات سيئة وعدم التعامل مع رفض الوعد بشكل صحيح. بالنسبة إلى الأخير ، ستحتاج إما إلى استخدام نتيجة وعد الإرسال لتحديد وقت الرد على مكالمة واجهة برمجة التطبيقات أو استخدام async/await
. بالنسبة للأول ، ستحتاج إلى إضافة المزيد من منطق التصحيح لتحديد سبب الطلب _bad_. سأبدأ بتسجيل كائن الرسالة الذي تحاول تمريره في المكالمة send
.
مرحبًا @ AWR14 ،
يحدث هذا الخطأ عندما لا تتعامل مع رفض الوعد. هنا مثال.
شكرا!
مع أطيب التحيات،
إلمر
الآن الرابط الجديد هو هذا ، في الواقع: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md؛)
لكنها نصيحة جميلة لأنه من الممكن الآن فهم ما هو الخطأ الحقيقي! شكرا!
@ AWR14 ،
كنت أواجه مشكلة مماثلة ، وقمت بإصلاحها من خلال التأكد من أن حقل البريد الإلكترونيfrom
بريد إلكتروني صالح
بالضبط ، يجب عليك التحقق من حالة البريد الإلكتروني داخل مسؤول sendgrid
التعليق الأكثر فائدة
@ AWR14 ،
كنت أواجه مشكلة مماثلة ، وقمت بإصلاحها من خلال التأكد من أن حقل البريد الإلكتروني
from
بريد إلكتروني صالح