Node.js 如何修复503(服务不可用)?
我已成功将我的reactApp部署到heroku,但无法处理我的POST请求,而是在我尝试提交联系人表单时在控制台中收到错误消息? 我已经附上了控制台中记录的错误的屏幕截图 **客户端文件夹中的package.json** { “代理”:“:5000”, } **屏幕截图** //index.jsNode.js 如何修复503(服务不可用)?,node.js,reactjs,Node.js,Reactjs,我已成功将我的reactApp部署到heroku,但无法处理我的POST请求,而是在我尝试提交联系人表单时在控制台中收到错误消息? 我已经附上了控制台中记录的错误的屏幕截图 **客户端文件夹中的package.json** { “代理”:“:5000”, } **屏幕截图** //index.js const express = require('express'); const bodyParser = require('body-parser'); const nodemailer = re
const express = require('express');
const bodyParser = require('body-parser');
const nodemailer = require('nodemailer');
const path = require('path');
const app = express();
// remove dotenv on deploy
//require('dotenv').config();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
// Serve the static files from the React app
app.use(express.static(path.join(__dirname, 'client/build')));
// Handles any requests that don't match the ones above
app.get('*', (req, res) =>{
res.sendFile(path.join(__dirname+'/client/build/index.html'));
});
app.post('/api/form', (req, res) => {
// console.log(req.body)
// console.log(process.env)
nodemailer.createTestAccount((err, account) => {
const htmlEmail = `
<h4>Register as a software Engineer</h4>
<ul>
<li>First Name: ${req.body.name}</li>
<li>Last Name: ${req.body.nam}</li>
<li>Email: ${req.body.email}</li>
<li>Years of Coding Experience: ${experience}</li>
</ul>
`
// let testAccount = await nodemailer.createTestAccount();
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: process.env.REACT_APP_FOO1,
pass: process.env.REACT_APP_FOO3
}
});
let mailOptions = {
from: req.body.email,
to: process.env.REACT_APP_FOO1,
subject: req.body.name,
text: req.body.email,
html: htmlEmail
}
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
return console.log('Message not sent !')
}
return console.log('Message sent successfully!' + info.body.email)
})
})
})
const PORT = process.env.PORT || 5000
app.listen(PORT, () => {
console.log(`Server listening to port ${PORT}`)
})
const express=require('express');
const bodyParser=require('body-parser');
const nodemailer=require('nodemailer');
const path=require('path');
常量app=express();
//在部署时删除dotenv
//require('dotenv').config();
use(bodyParser.json());
use(bodyParser.urlencoded({extended:false}));
//从React应用程序提供静态文件
app.use(express.static(path.join('client/build'));
//处理与上述请求不匹配的任何请求
应用程序获取(“*”,(请求,请求)=>{
res.sendFile(path.join(uu dirname+'/client/build/index.html');
});
app.post('/api/form',(req,res)=>{
//控制台日志(请求正文)
//console.log(process.env)
nodeEmailer.createTestAccount((错误,帐户)=>{
常量htmlEmail=`
注册为软件工程师
- 名字:${req.body.Name}
- 姓氏:${req.body.nam}
- 电子邮件:${req.body.Email}
- 多年的编码经验:${Experience}
`
//让testAccount=等待NodeEmailer.createTestAccount();
让transporter=nodeEmailer.createTransport({
服务:“gmail”,
认证:{
用户:process.env.REACT\u APP\u FOO1,
通过:process.env.REACT\u APP\u FOO3
}
});
让邮件选项={
发件人:req.body.email,
收件人:process.env.REACT\u APP\u FOO1,
主题:req.body.name,
文本:req.body.email,
html:htmlEmail
}
transporter.sendMail(邮件选项,(错误,信息)=>{
如果(错误){
返回console.log('消息未发送!')
}
返回console.log('消息发送成功!'+info.body.email)
})
})
})
const PORT=process.env.PORT | 5000
应用程序侦听(端口,()=>{
log(`Server listing to port${port}`)
})
此错误与服务器端代码有关。您的server.js中出现了一些错误。请添加一些代码。因此,我们可以在server.js中更清楚地了解您做错了什么
问题:请求超时(应用程序需要30秒以上才能响应):code=H12 desc='request timeout'status=503 bytes=0
解决方案:需要30秒以上的代码必须在Heroku中异步运行(例如,作为后台作业)。有关详细信息,请参阅Heroku DevCenter中的读取请求超时
if(process.env.NODE_env=='production'){
const path=require('path');
应用程序获取('/*',(请求,请求)=>{
res.sendfile(path.resolve(uuu dirname,'client','build','index.html'))
})
}
Hi@Prakash Karena注意到,我将在接下来的2分钟内更新上面的server.js代码。非常感谢是的!没关系,让我按照建议调整代码。ThanksPOST 503(服务不可用),未捕获(承诺中)错误:请求失败,状态代码503位于createError.js:17位于settle.js:19位于XMLHttpRequest。(xhr.js:60)这是我运行“heroku日志”时遇到的错误[2019-09-20T10:18:25.993744+00:00 heroku[router]:at=error code=H12 desc=“Request timeout”method=POST path=“/api/form”host=skylla.herokuapp.com Request_id=25dbe0cb-5d44-4e31-923e-1c92429f460c fwd=“41.210.159.124”dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=https]可以吗?.Hi@saurabh,是的,我检查了日志,这就是我在这里得到的[2019-09-20T10:18:25.993744+00:00 heroku[router]:at=error code=H12 desc=“Request timeout”method=POST path=“/api/form”host=skylla.herokuapp.com Request_id=25dbe0cb-5d44-4e31-923e-1c92429f460c fwd=“41.210.159.124”dyno=web.1 connect=1ms service=30000ms status=503 bytes=0 protocol=https]您遇到了H12错误这些链接可能会帮助您,好的,我会看一看。谢谢