Sendgrid-nodejs: UnhandledPromiseRejectionWarning: ์˜ค๋ฅ˜: ์ž˜๋ชป๋œ ์š”์ฒญ

์— ๋งŒ๋“  2019๋…„ 04์›” 24์ผ  ยท  9์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sendgrid/sendgrid-nodejs

๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

๋‚ด ์ฝ”๋“œ๋Š” 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 ๋ฒ„์ „: ๋งˆ์Šคํ„ฐ(์ตœ์‹  ์ปค๋ฐ‹: [์ปค๋ฐ‹ ๋ฒˆํ˜ธ])
    "@sendgrid/mail": "^6.3.1",
  • Node.js ๋ฒ„์ „: v10.14.2
unknown or a waiting for feedback non-library issue

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@AWR14 ,
๋น„์Šทํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋Š”๋ฐ from ์ด๋ฉ”์ผ ํ•„๋“œ๊ฐ€ ์œ ํšจํ•œ ์ด๋ฉ”์ผ์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  9 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @AWR14 ์ž…๋‹ˆ๋‹ค .

์ด ์˜ค๋ฅ˜๋Š” ์•ฝ์† ๊ฑฐ๋ถ€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

๋งˆ์Œ์„ ๋‹ด์•„,

์—˜๋จธ

@AWR14 ,
๋น„์Šทํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋Š”๋ฐ from ์ด๋ฉ”์ผ ํ•„๋“œ๊ฐ€ ์œ ํšจํ•œ ์ด๋ฉ”์ผ์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@hkadyanji , (๊ทธ๋ฆฌ๊ณ  ํ•จ๊ป˜ ์˜ค๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ) ์ด์ƒํ•˜๊ฒŒ๋„ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ์ตœ์†Œํ•œ ๊ณต๋ฐฑ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๋ฅผ ""๋กœ ์„ค์ •ํ•˜๋Š” ๋Œ€์‹  ๊ทธ๊ฒƒ์„ " "(๋”ฐ์˜ดํ‘œ ์•ˆ์˜ ๊ณต๋ฐฑ)์œผ๋กœ ์˜ฎ๊ธฐ๋ฉด ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด๊ฒƒ์ด ์ƒ๋‹นํžˆ ์ด์ƒํ•˜์ง€๋งŒ ๊ณ ์ •๋œ ๊ฒƒ์ด ๊นจ์ง„ ๊ฒƒ๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค. :) ํ”ผ๋“œ๋ฐฑ/์ธ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค...

๊ณตํ‰ํ•˜๊ฒŒ ๋งํ•˜๋ฉด, ๋‚˜๋Š” ๊ณต๋ฐฑ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด to: ๋ฐ from: ํ•„๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด ์•ฑ์— ๊ฐ’์ด ์žˆ์œผ๋ฏ€๋กœ ํ•„์š”์„ฑ์„ ๋ณด์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์•ˆ์ „ํ•œ ์ชฝ์—์„œ ๋ฐฉ์†กํ•  ๊ฒƒ์ด๊ณ , ๋ฏธ๋ž˜ ๋ฒ„์ „์—์„œ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ์ฆ๋ช…๋  ๋•Œ๊นŒ์ง€ ๋ˆ„๋ฝ๋œ ํ•„๋“œ์— ์ตœ์†Œํ•œ ๊ณต๊ฐ„์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์‹œ, ๋‚˜๋Š” ๋ˆ„๊ตฌ๋ฅผ ๋†๋‹ดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ ์ด ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค... ใ…‹ใ…‹

"@sendgrid/mail"์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: "^6.4.0"

๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๋™์ผํ•œ ์˜ค๋ฅ˜์— ์ง๋ฉดํ–ˆ์ง€๋งŒ ๋ด‡์˜ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.
๋ด‡ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ 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 ์ „์— await๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์˜ค๋ฅ˜๊ฐ€ ํฌ์ฐฉ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฅ˜ ์ด์œ ๋Š” to ์™€ cc ๊ต์ฐจ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.ใ€‚

to ์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ด๋ฉ”์ผ์„ ์ œ๊ฑฐํ•˜๋ฉด cc ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

์—ฌ๊ธฐ์—๋Š” 2๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์š”์ฒญ์„ ํ•˜๊ณ  ํ”„๋ผ๋ฏธ์Šค ๊ฑฐ๋ถ€๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ ์ „์†ก ์•ฝ์† ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ API ํ˜ธ์ถœ์— ์‘๋‹ตํ•  ์‹œ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ async/await ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ „์ž์˜ ๊ฒฝ์šฐ ์š”์ฒญ์ด _bad_์ธ ์ด์œ ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋””๋ฒ„๊ทธ ๋…ผ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. send ํ˜ธ์ถœ์—์„œ ์ „๋‹ฌํ•˜๋ ค๋Š” ๋ฉ”์‹œ์ง€ ๊ฐœ์ฒด๋ฅผ ๋กœ๊น…ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @AWR14 ์ž…๋‹ˆ๋‹ค .

์ด ์˜ค๋ฅ˜๋Š” ์•ฝ์† ๊ฑฐ๋ถ€๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

๋งˆ์Œ์„ ๋‹ด์•„,

์—˜๋จธ

์ด์ œ ์ƒˆ ๋งํฌ๋Š” ์‹ค์ œ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md ;)

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์˜ ์•„๋ฆ„๋‹ค์šด ํŒ์€ ์ด์ œ ์ง„์งœ ์˜ค๋ฅ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@AWR14 ,
๋น„์Šทํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋Š”๋ฐ from ์ด๋ฉ”์ผ ํ•„๋“œ๊ฐ€ ์œ ํšจํ•œ ์ด๋ฉ”์ผ์ธ์ง€ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ๋Š” sendgrid ๊ด€๋ฆฌ์ž ๋‚ด์—์„œ ์ด๋ฉ”์ผ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰