Получение следующей ошибки:
(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')
})
})
Привет @ AWR14!
Эта ошибка возникает, когда вы не обрабатываете отказ от обещания. Вот пример.
Спасибо!
С наилучшими пожеланиями,
Элмер
@ AWR14 ,
У меня возникла аналогичная проблема, и я исправил ее, убедившись, что поле адреса электронной почты from
является действительным адресом электронной почты.
@hkadyanji (и все остальные), как ни странно, я обнаружил, что если я не предоставлю все поля И не гарантирую, что у них хотя бы есть пробел, я получаю сообщение об ошибке - вместо того, чтобы устанавливать для поля значение "", я устанавливаю его на "" (пробел внутри кавычек), и это решило мою проблему - я нахожу это довольно странным, но исправленное лучше, чем сломанное. :) Если у кого-то есть отзывы / идеи, я очень хочу знать ...
Честно говоря, я не тестировал поля to: и from: на предмет разрешения пробелов, поскольку они обычно имеют значение в моем приложении, поэтому не видел необходимости. Я буду осторожен и просто проверю, что в любом отсутствующем поле есть хотя бы место, пока не будет доказано обратное в будущей версии. Но опять же, кого я обманываю? Я не собираюсь посещать этот код снова, пока что-то еще не сломается ... lol
Я использую "@ sendgrid / mail": "^ 6.4.0"
Решилась ли проблема, я столкнулся с той же ошибкой, но в другом контексте бота.
Он отлично работает в эмуляторе бота, но как только я публикую в лазурном режиме, я получаю эту ошибку.
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>',
};
В моем случае эта ошибка возникает из-за того, что я не использовал await до send
api, что привело к тому, что ошибка не была обнаружена.
Причина ошибки в том, что to
и cc
пересекаются。
Удаление повторяющихся писем в to
и cc
может решить вашу проблему :)
Здесь есть 2 проблемы: неправильные запросы и неправильная обработка отказов от обещаний. Для последнего вам нужно либо использовать результат обещания отправки, чтобы определить, когда отвечать на ваш вызов API, либо использовать async/await
. Для первого вам потребуется добавить дополнительную логику отладки, чтобы определить, почему запрос _ плохой_. Я бы начал с регистрации объекта сообщения, который вы пытаетесь передать в вызове send
.
Привет @ AWR14!
Эта ошибка возникает, когда вы не обрабатываете отказ от обещания. Вот пример.
Спасибо!
С наилучшими пожеланиями,
Элмер
Теперь новая ссылка на самом деле такая: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/success-failure-errors.md;)
Но это КРАСИВЫЙ наконечник, потому что теперь можно понять, в чем заключается настоящая ошибка! Спасибо!
@ AWR14 ,
У меня возникла аналогичная проблема, и я исправил ее, убедившись, что поле адреса электронной почтыfrom
является действительным адресом электронной почты.
Собственно, вы должны проверить статус электронной почты в админке sendgrid.
Самый полезный комментарий
@ AWR14 ,
У меня возникла аналогичная проблема, и я исправил ее, убедившись, что поле адреса электронной почты
from
является действительным адресом электронной почты.