Sendgrid-nodejs: UnhandledPromiseRejectionWarning: Error: Solicitud incorrecta

Creado en 24 abr. 2019  ·  9Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

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')
  })
})
  • sendgrid-nodejs Versión: master (última confirmación: [número de confirmación])
    "@ sendgrid / mail": "^ 6.3.1",
  • Versión de Node.js: v10.14.2
unknown or a waiting for feedback non-library issue

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

Todos 9 comentarios

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ónico from sea ​​un correo electrónico válido

Exactamente, debe verificar el estado del correo electrónico dentro del administrador de sendgrid

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

thinkingserious picture thinkingserious  ·  4Comentarios

thinkingserious picture thinkingserious  ·  4Comentarios

nicoasp picture nicoasp  ·  3Comentarios

amlcodes picture amlcodes  ·  4Comentarios

murphman300 picture murphman300  ·  4Comentarios