我尝试了其他解决方案,但还是没有运气。我正在使用Nodemailer在我的React / Node应用程序上添加一个简单的联系表单。我正在使用Heroku部署应用程序,目前正在我的本地服务器上进行测试。尽管邮件已传递到分配的邮箱,但在Node.js核心2分钟超时后,我仍然收到错误net::ERR_EMPTY_RESPONSE
和TypeError: Failed to fetch
。
我已经尝试过1)在客户端同时使用axios和fetch请求,以及2)在服务器文件中添加CORS标头,但结果相同。
app.use(function(req, res, next) {
console.log('request', req.url, req.body, req.method);
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Request-Method: GET,PUT,POST,DELETE,OPTIONS")
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, x-token");
if(req.method === 'OPTIONS') {
res.end();
} else {
next();
}
});
这是从客户端提交的处理程序方法:
handleFormSubmit(e){
e.preventDefault();
console.log(this.state);
console.log('submit clicked');
const data = {
"fname": this.state.fname,
"lname": this.state.lname,
"email": this.state.email,
"message": this.state.message
}
fetch("http://localhost:3000/api/form", {
method: "POST",
headers: {"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify(data)
})
.then((res) => {return res.json()})
.then(res => {
if(res.ok){
console.log("request sucess");
return res.json();
} else {
console.log("request fail");
throw new Error("something went wrong..");
}
}).catch(err => {
console.log(err);
console.log("error happed");
})
我遵循了Nodemailer教程,并且路由设置正确。邮件到达邮箱。我希望输出返回成功,但会继续捕获错误,而且我不知道自己在做什么错。我非常感谢您的任何建议。