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アプリの一部としてExpressとノードにあります:

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

このエラーは、Promiseの拒否を処理しない場合に発生します。 これが例です。

ありがとう!

敬具、

エルマー

@ AWR14
同様の問題に直面していましたが、 fromメールフィールドが有効なメールであることを確認して修正しました

@hkadyanji 、(そして他の誰かがやってくる)奇妙なことに、すべてのフィールドを提供せず、少なくともスペースがあることを確認すると、エラーが発生することが

公平を期すために、私はto:フィールドとfrom:フィールドをテストしませんでした。これらは通常、アプリで値を持っているため、必要性がわかりませんでした。 私は安全側で放映し、将来のバージョンで別の方法で証明されるまで、欠落しているフィールドに少なくともスペースがあることを確認します。 しかし、繰り返しになりますが、私は誰をからかっています。 他の何かが壊れるまで、私はこのコードに再びアクセスする可能性は低いです...笑

「@sendgrid / mail」を使用しています:「^ 6.4.0」

問題は解決しましたか?同じエラーに直面していますが、ボットのコンテキストが異なります。
ボットエミュレーターでは正常に動作していますが、Azureに公開すると、このエラーが発生します。

BotFrameworkAdapter.processActivity():500エラー-エラー:不正なリクエスト
(ノード:17240)UnhandledPromiseRejectionWarning:エラー:エラー:不正なリクエスト

私は、同じ警告を打つが、それはタイプミスの問題があることが私の間違いだったのではなく、 text 、私はそれを入力したtest

再び機能させるには、toメールとキーが有効であることを確認してください。

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

私の場合、このエラーが発生するのは、 send apiの前にawaitを使用しなかったため、エラーがキャッチされなかったためです。

そして、エラーの理由はtocc交差点があることです。

to繰り返されるメールを削除すると、 cc問題が解決する場合があります:)

ここには2つの問題があります。悪い要求をすることとpromiseの拒否を適切に処理しないことです。 後者の場合、API呼び出しに応答するタイミングを決定するために、send promiseの結果を使用するか、 async/awaitを使用する必要があります。 前者の場合、要求が_bad_である理由を判別するために、デバッグロジックをさらに追加する必要があります。 send呼び出しで渡そうとしているメッセージオブジェクトをログに記録することから始めます。

こんにちは@ AWR14

このエラーは、Promiseの拒否を処理しない場合に発生します。 これが例です。

ありがとう!

敬具、

エルマー

これで、新しいリンクは実際には次のようになります:https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md;)

しかし、その美しいヒントにより、実際のエラーが何であるかを理解できるようになりました。 ありがとう!

@ AWR14
同様の問題に直面していましたが、 fromメールフィールドが有効なメールであることを確認して修正しました

正確には、sendgrid管理者内のメールステータスを確認する必要があります

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

amlcodes picture amlcodes  ·  4コメント

metalshan picture metalshan  ·  3コメント

danielflippance picture danielflippance  ·  4コメント

prasoonjalan picture prasoonjalan  ·  3コメント

thinkingserious picture thinkingserious  ·  4コメント