Obteniendo el siguiente error:
(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.
Mi código está en express y node como parte de una aplicación 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')
})
})
Hola @ AWR14 ,
Este error ocurre cuando no maneja el rechazo de la promesa. He aquí un ejemplo.
¡Gracias!
Con los mejores deseos,
Elmer
@ AWR14 ,
Estaba enfrentando un problema similar y lo solucioné asegurándome de que el campo de correo electrónico from
sea un correo electrónico válido
@hkadyanji , (y cualquier otra persona que venga) por extraño que parezca, he descubierto que si no proporciono todos los campos Y me aseguro de que al menos tengan un espacio, aparece el error: en lugar de establecer un campo en "", configuro "" (espacio dentro de las comillas) y resolvió mi problema. Me parece bastante extraño, pero es mejor arreglarlo que romperlo. :) Si alguien tiene algún comentario / idea, estoy ansioso por saber ...
Para ser justos, no probé los campos to: y from: para permitir espacios en blanco, ya que generalmente tienen un valor en mi aplicación, por lo que no vi la necesidad. Saldré al aire en el lado seguro y solo me aseguraré de que cualquier campo faltante tenga al menos un espacio hasta que se demuestre lo contrario en una versión futura. Pero, de nuevo, ¿a quién engaño? No es probable que vuelva a visitar este código hasta que se rompa algo más ... jajaja
Estoy usando "@ sendgrid / mail": "^ 6.4.0"
Si el problema se resolvió, estoy enfrentando el mismo error pero en un contexto diferente del bot.
Funciona bien en el emulador de bot, pero una vez que publico en azure, aparece este error.
BotFrameworkAdapter.processActivity (): 500 ERROR - Error: Solicitud incorrecta
(nodo: 17240) UnhandledPromiseRejectionWarning: Error: Error: Solicitud incorrecta
Recibí la misma advertencia, pero fue mi error el que tiene un error tipográfico, en lugar de text
, lo escribí test
.
Para que vuelva a funcionar, asegúrese de que el correo electrónico y las claves sean válidos.
const msg = {
to: '[email protected]',
from: '[email protected]',
subject: 'Hello world',
text: 'Hello plain world!',
html: '<p>Hello HTML world!</p>',
};
En mi caso, este error se debe a que no usé await antes de send
api, lo que resultó en no detectar el error.
Y, el motivo del error es to
y cc
tienen alguna intersección。
Elimine los correos electrónicos repetidos en to
y cc
pueden resolver su problema :)
Aquí hay 2 problemas: hacer solicitudes incorrectas y no manejar adecuadamente los rechazos de promesas. Para este último, deberá usar el resultado de la promesa de envío para determinar cuándo responder a su llamada de API o usar async/await
. Para el primero, deberá agregar más lógica de depuración para determinar por qué la solicitud es _bad_. Comenzaría por registrar el objeto de mensaje que está intentando pasar en la llamada send
.
Hola @ AWR14 ,
Este error ocurre cuando no maneja el rechazo de la promesa. He aquí un ejemplo.
¡Gracias!
Con los mejores deseos,
Elmer
Ahora, el nuevo enlace es este, en realidad: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md;)
¡Pero es un consejo HERMOSO porque ahora es posible entender cuál es el verdadero error! ¡Gracias!
@ AWR14 ,
Estaba enfrentando un problema similar y lo solucioné asegurándome de que el campo de correo electrónicofrom
sea un correo electrónico válido
Exactamente, debe verificar el estado del correo electrónico dentro del administrador de sendgrid
Comentario más útil
@ AWR14 ,
Estaba enfrentando un problema similar y lo solucioné asegurándome de que el campo de correo electrónico
from
sea un correo electrónico válido