成功 post 请求后出现 http-proxy-middleware econnreset 错误
http-proxy-middleware econnreset error after successful post request
按照本教程 https://www.youtube.com/watch?v=o3eR0X91Ogs 使用 Nodejs/Express 和 create-react-app 开发联系表单。我 运行 遇到的问题是,当我在表单上点击提交时,消息成功,并且我在收件箱中收到了它。但是,在开发人员控制台中,我遇到了我在 Contact.js 中设置的超时错误,在我的终端中它记录了 message sent
,位于 [=29] 中的控制台日志=],之后立即抛出以下错误:
HPM ERROR: Error: socket hang up
[1] at connResetException (internal/errors.js:612:14)
[1] at Socket.socketCloseListener (_http_client.js:443:25)
[1] at Socket.emit (events.js:326:22)
[1] at TCP.<anonymous> (net.js:673:12) {
[1] code: 'ECONNRESET'
[1] }
[1] [HPM] Error occurred while trying to proxy request /api/contact/ from localhost:3001 to http://localhost:3000/ (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)
有谁知道为什么会出现这个错误,我该如何解决?消息已发送但随后挂起,这会阻止应用程序状态重置 (resetForm
)。同时,Contact.js 中的 axios.post
不会将 sent
的状态更新为 true。
The Github repo for the project.
编辑:我已经坚持了几天了。查看了类似的问题,尝试了我能找到的所有修复方法,但此错误仍然存在。
这是对 ExpressJs 响应如何工作的常见误解。如果您不发送对请求的响应,它将永远卡住。因此,您所要做的就是发送回复!此外,res
变量在 sendMail
函数的回调中是 re-defined。这是修复:
app.post('/api/contact', (req, res) => {
// ...
smtpTransport.sendMail(mailOptions, (err, mailResponse) => {
if(err) {
console.log(err);
} else {
console.log('Message sent!');
}
smtpTransport.close();
return res.send(err ? err : 'Message sent!');
});
按照本教程 https://www.youtube.com/watch?v=o3eR0X91Ogs 使用 Nodejs/Express 和 create-react-app 开发联系表单。我 运行 遇到的问题是,当我在表单上点击提交时,消息成功,并且我在收件箱中收到了它。但是,在开发人员控制台中,我遇到了我在 Contact.js 中设置的超时错误,在我的终端中它记录了 message sent
,位于 [=29] 中的控制台日志=],之后立即抛出以下错误:
HPM ERROR: Error: socket hang up
[1] at connResetException (internal/errors.js:612:14)
[1] at Socket.socketCloseListener (_http_client.js:443:25)
[1] at Socket.emit (events.js:326:22)
[1] at TCP.<anonymous> (net.js:673:12) {
[1] code: 'ECONNRESET'
[1] }
[1] [HPM] Error occurred while trying to proxy request /api/contact/ from localhost:3001 to http://localhost:3000/ (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)
有谁知道为什么会出现这个错误,我该如何解决?消息已发送但随后挂起,这会阻止应用程序状态重置 (resetForm
)。同时,Contact.js 中的 axios.post
不会将 sent
的状态更新为 true。
The Github repo for the project.
编辑:我已经坚持了几天了。查看了类似的问题,尝试了我能找到的所有修复方法,但此错误仍然存在。
这是对 ExpressJs 响应如何工作的常见误解。如果您不发送对请求的响应,它将永远卡住。因此,您所要做的就是发送回复!此外,res
变量在 sendMail
函数的回调中是 re-defined。这是修复:
app.post('/api/contact', (req, res) => {
// ...
smtpTransport.sendMail(mailOptions, (err, mailResponse) => {
if(err) {
console.log(err);
} else {
console.log('Message sent!');
}
smtpTransport.close();
return res.send(err ? err : 'Message sent!');
});