Sendgrid-nodejs: UnhandledPromiseRejectionWarning: Erro: Solicitação inválida

Criado em 24 abr. 2019  ·  9Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Obtendo o seguinte erro:

(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.

Meu código está expresso e em nó como parte de um aplicativo 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')
  })
})
  • Versão sendgrid-nodejs: master (commit mais recente: [número do commit])
    "@ sendgrid / mail": "^ 6.3.1",
  • Versão Node.js: v10.14.2
unknown or a waiting for feedback non-library issue

Comentários muito úteis

@ AWR14 ,
Eu estava enfrentando um problema semelhante e resolvi-o certificando-me de que o campo de e-mail from é um e-mail válido

Todos 9 comentários

Olá @ AWR14 ,

Esse erro ocorre quando você não lida com a rejeição da promessa. Aqui está um exemplo.

Obrigado!

Obrigado pela atenção,

Elmer

@ AWR14 ,
Eu estava enfrentando um problema semelhante e resolvi-o certificando-me de que o campo de e-mail from é um e-mail válido

@hkadyanji , (e qualquer outra pessoa que venha junto) estranhamente descobri que se eu não fornecer todos os campos E garantir que eles tenham pelo menos um espaço, recebo o erro - em vez de definir um campo como "", eu defino para "" (espaço entre as aspas) e resolveu meu problema - acho isso muito estranho, mas consertar é melhor do que quebrar. :) Se alguém tiver algum feedback / insight, estou ansioso para saber ...

Para ser justo, eu não testei os campos to: and from: para permitir espaços em branco, pois eles geralmente têm um valor em meu aplicativo, então não vi a necessidade. Vou ao ar no lado seguro e apenas garantir que qualquer campo ausente tenha pelo menos um espaço até que seja provado o contrário em uma versão futura. Mas, novamente, quem estou enganando; Não é provável que visite este código novamente até que algo quebre ... lol

Estou usando "@ sendgrid / mail": "^ 6.4.0"

o problema foi resolvido, estou enfrentando o mesmo erro, mas em um contexto diferente do bot.
Ele está funcionando bem no emulador de bot, mas depois de publicar no azure, recebo este erro.

BotFrameworkAdapter.processActivity (): 500 ERROR - Erro: Solicitação inválida
(nó: 17240) UnhandledPromiseRejectionWarning: Erro: Erro: Solicitação inválida

Recebi o mesmo aviso, mas foi meu erro que ocorreu um erro de digitação, em vez de text , digitei test .

Para que funcione novamente, certifique-se de que o email e as chaves sejam válidos.

const msg = {
  to: '[email protected]',
  from: '[email protected]',
  subject: 'Hello world',
  text: 'Hello plain world!',
  html: '<p>Hello HTML world!</p>',
};

No meu caso, esse erro ocorre porque não usei o await antes de send api, o que resultou em não detectar o erro.

E, o motivo do erro é to e cc têm alguma interseção。

Remova os e-mails repetidos em to e cc pode resolver seu problema :)

Existem 2 problemas aqui: fazer solicitações incorretas e não lidar adequadamente com rejeições de promessa. Para o último, você precisará usar o resultado da promessa de envio para determinar quando responder à sua chamada de API ou usar async/await . Para o primeiro, você precisará adicionar mais lógica de depuração para determinar por que a solicitação é _bad_. Eu começaria registrando o objeto de mensagem que você está tentando transmitir na chamada send .

Olá @ AWR14 ,

Esse erro ocorre quando você não lida com a rejeição da promessa. Aqui está um exemplo.

Obrigado!

Obrigado pela atenção,

Elmer

Agora, o novo link é este, na verdade: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md;)

Mas é uma dica BONITA porque agora é possível entender qual é o verdadeiro erro! Obrigado!

@ AWR14 ,
Eu estava enfrentando um problema semelhante e resolvi-o certificando-me de que o campo de e-mail from é um e-mail válido

Exatamente, você tem que verificar o status do e-mail dentro do admin do sendgrid

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

wooyah picture wooyah  ·  4Comentários

danielflippance picture danielflippance  ·  4Comentários

egges picture egges  ·  3Comentários

thidasapankaja picture thidasapankaja  ·  4Comentários

zvone187 picture zvone187  ·  4Comentários