Heroku错误:尝试部署Express + React应用程序时出现“ connect ECONNREFUSED 127.0.0.1:3306”

时间:2020-07-14 15:50:32

标签: node.js reactjs express heroku

我试图将Express + React应用程序部署到Heroku。 Heroku已成功连接我的Github帐户,然后单击“部署分支”导致“您的应用已成功部署”。但是当我去浏览我的网站时,它显示:

“应用程序错误应用程序中发生错误,无法为您的页面提供服务。如果您是应用程序所有者,请检查日志以获取详细信息。”

这是我的日志:

Starting process with command `npm start`
> myproject@ start /app
> node backend/index.js
My project SQL server listening on PORT 4000
/app/backend/index.js:22
if (err) throw err;
^
Error: connect ECONNREFUSED 127.0.0.1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)

还有连接到MySQL的index.js

const express = require('express');
const cors = require('cors');
const mysql = require('mysql');
const app = express();

app.use(cors());

app.get('/', (req, res) => {
    res.send('go to /my-project to see my project')
});

const pool = mysql.createPool({
    connectionLimit: 10,
    host: 'localhost',
    user: 'root',
    password: 'myjs123@',
    database: 'my-project',
    debug: false
});

pool.getConnection((err, connection) => {
    if (err) throw err;
    app.get('/my-project', (req, res) => {
        connection.query(SELECT_ALL_FACTS_QUERY, (err, results) => {
            if (err) {
                return res.send(err)
            }
            else {
                return res.json({
                    data: results
                })
            };
        });
    });

});

const SELECT_ALL_FACTS_QUERY = 'SELECT * FROM `my-project`.`my-table`;';

app.listen(4000, () => {
    console.log('My project SQL server listening on PORT 4000');
});

我做错了什么,我该如何部署?

3 个答案:

答案 0 :(得分:0)

我认为在下面的代码中不应使用本地主机,因为本地主机无法在部署中工作。

const pool = mysql.createPool({
    connectionLimit: 10,
    //here
    host: 'localhost',
    user: 'root',
    password: 'myjs123@',
    database: 'my-project',
    debug: false
});

我发现的另一个错误是您应该使用环境变量来存储 端口号。在生产中,端口号是由Heroku分配的(如果未分配给您) 可以分配。所以你的代码应该是

let port=process.env.PORT||4000
app.listen(port, () => {
    console.log(`App running on port ${port} `);
});

答案 1 :(得分:0)

在我删除if (err) throw err;之后,它已经过了这个阶段,仍然不确定为什么会这样。

Nithin的答案也被考虑在内。

答案 2 :(得分:0)

当我尝试连接到 heroku cli 时,同样的错误发生在我身上,我只是阅读了代理的 heroku 配置,情况就是这样。问题通过配置http和https代理解决

set HTTP_PROXY=http://proxy.server.com:portnumber

或设置 HTTPS_PROXY=https://proxy.server.com:portnumber