Sendgrid-nodejs: UnhandledPromiseRejectionWarning: Kesalahan: Permintaan Buruk

Dibuat pada 24 Apr 2019  ·  9Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Mendapatkan kesalahan berikut:

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

Kode saya dalam ekspres dan simpul sebagai bagian dari aplikasi 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: master (komit terbaru: [nomor komit])
    "@sendgrid/mail": "^6.3.1",
  • Versi Node.js: v10.14.2
unknown or a waiting for feedback non-library issue

Komentar yang paling membantu

@AWR14 ,
Saya menghadapi masalah yang sama, dan saya memperbaikinya dengan memastikan bidang email from adalah email yang valid

Semua 9 komentar

Halo @AWR14 ,

Kesalahan ini terjadi ketika Anda tidak menangani penolakan janji. Berikut adalah contoh.

Terima kasih!

Salam hangat,

Elmer

@AWR14 ,
Saya menghadapi masalah yang sama, dan saya memperbaikinya dengan memastikan bidang email from adalah email yang valid

@hkadyanji , (dan siapa pun yang datang) anehnya saya telah menemukan bahwa jika saya tidak menyediakan semua bidang DAN memastikan mereka setidaknya memiliki ruang, saya mendapatkan kesalahan -- alih-alih menyetel bidang ke "", saya mengatur ke " " (spasi di dalam tanda kutip) dan itu memecahkan masalah saya -- saya menemukan ini cukup aneh tetapi diperbaiki lebih baik daripada rusak. :) Jika ada yang punya umpan balik/wawasan, saya ingin tahu ...

Dalam keadilan, saya tidak menguji ke: dan dari: bidang untuk mengizinkan kosong karena biasanya memiliki nilai di aplikasi saya sehingga tidak melihat kebutuhan. Saya akan mengudara di sisi yang aman dan hanya memastikan setiap bidang yang hilang memiliki setidaknya ruang sampai terbukti sebaliknya di versi mendatang. Tapi sekali lagi, siapa aku bercanda; Saya tidak akan mengunjungi kode ini lagi sampai sesuatu yang lain rusak... lol

Saya menggunakan "@sendgrid/mail": "^6.4.0"

apakah masalah terselesaikan, saya menghadapi kesalahan yang sama tetapi dalam konteks bot yang berbeda.
Ini berfungsi dengan baik di emulator bot tetapi setelah saya mempublikasikan ke Azure, saya mendapatkan kesalahan ini.

BotFrameworkAdapter.processActivity(): 500 ERROR - Kesalahan: Permintaan Buruk
(simpul: 17240) UnhandledPromiseRejectionWarning: Kesalahan: Kesalahan: Permintaan Buruk

Saya menekan peringatan yang sama, tetapi kesalahan saya yang memiliki masalah salah ketik, alih-alih text , saya mengetiknya test .

Untuk membuatnya berfungsi kembali, pastikan ke email & kunci valid.

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

Dalam kasus saya, kesalahan ini terjadi karena saya tidak menggunakan api menunggu sebelum send yang mengakibatkan tidak menangkap kesalahan.

Dan, alasan kesalahannya adalah to dan cc memiliki beberapa persimpangan。

Hapus email berulang di to dan cc dapat menyelesaikan masalah Anda :)

Ada 2 masalah di sini: membuat permintaan yang buruk dan tidak menangani penolakan janji dengan benar. Untuk yang terakhir, Anda harus menggunakan hasil janji kirim untuk menentukan kapan harus menanggapi panggilan API Anda atau menggunakan async/await . Untuk yang pertama, Anda perlu menambahkan lebih banyak logika debug untuk menentukan mengapa permintaannya _bad_. Saya akan mulai dengan mencatat objek pesan yang Anda coba sampaikan dalam panggilan send .

Halo @AWR14 ,

Kesalahan ini terjadi ketika Anda tidak menangani penolakan janji. Berikut adalah contoh.

Terima kasih!

Salam hangat,

Elmer

Sekarang tautan barunya adalah yang ini, sebenarnya: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md ;)

Tapi itu tip INDAH karena sekarang mungkin untuk memahami apa kesalahan sebenarnya! Terima kasih!

@AWR14 ,
Saya menghadapi masalah yang sama, dan saya memperbaikinya dengan memastikan bidang email from adalah email yang valid

Tepatnya, Anda harus memeriksa status email di dalam admin sendgrid

Apakah halaman ini membantu?
0 / 5 - 0 peringkat