Ошибка Heroku: «подключить ECONNREFUSED 127.0.0.1:3306» при попытке развернуть приложение Express + React - PullRequest
0 голосов
/ 14 июля 2020

Я пытался развернуть свое приложение 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)

И index.js, который подключается к MySQL:

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');
});

Что я сделал не так и как я мог развернуть это?

Ответы [ 2 ]

0 голосов
/ 15 июля 2020

Он прошел этот этап после того, как я удалил if (err) throw err;, но до сих пор не знаю, почему это произошло.

Ответ Nithin тоже был учтен.

0 голосов
/ 14 июля 2020

Я думаю, что в приведенном ниже коде нельзя использовать localhost, он не будет работать при развертывании.

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} `);
});
...