Node.js 如何修复503(服务不可用)?

Node.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

我已成功将我的reactApp部署到heroku,但无法处理我的POST请求,而是在我尝试提交联系人表单时在控制台中收到错误消息?

我已经附上了控制台中记录的错误的屏幕截图

**客户端文件夹中的package.json**

{ “代理”:“:5000”, }

**屏幕截图** //index.js

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错误这些链接可能会帮助您,好的,我会看一看。谢谢