1

数週間前、私はブログアプリを始めました。このために、バックエンドのデータベースとして postgresql を使用しました。当時、アプリケーションは正常に動作し、フロントエンドから高速で実行されているバックエンド サーバーにデータを取得できました。今日、もう一度プロジェクトにアクセスすることにしましたが、エラーが発生しました。いくつかのエラー処理と StackOverflow での一連の検索の後、次のメッセージを取得できました。

Error: connect ECONNREFUSED 127.0.0.1:5432
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'connect',
  address: '127.0.0.1',
  port: 5432
}

postgres サーバーはポート 5432 で実行されており、Docker では実行されていません (これは、ほとんどの場合、他のユーザーとの間で問題が発生した場所です)。

以下に完全なコードを投稿しますが、問題はここで発生します。

const { Client } = require('pg');

const client = new Client({
    user: 'jonas',
    host: 'localhost',
    database: 'Blog_db',
    password: '1518',
    port: '5432',
});

client.connect().catch(err => {
    console.error(err);
});

(ちなみに、pgAdminを介して既存のデータにアクセスできるため、これは正しいパスワードとユーザー名です)。

繋がらない理由がわかりません。

私が試してみました:

  1. パソコンの再起動
  2. サービスでサービスを再起動する (これは Windows マシンです)
  3. postgresql の再インストール (完全)

この記事を書いている今、Windows をバージョン 2004 と wsl2 に更新したことに気付きました。以前は wsl1 でした。これは何か関係がありますか?Postgres を使用して、新しいプロジェクトを開始したかっただけです。問題が修正されるまで、一時的にmongodbとmonkまたはmongooseを使用すると思います。

8 月 3 日に追加: stackoverflow をさらに読んだ後、これは実行中の postgresql サーバーのインスタンスの量に関係している可能性があることがわかりました。これがタスクマネージャーから得たものです: タスクマネージャーの画像 3 つのインスタンスが実行されているのは正常ですか? そうでない場合、どうすればこれを修正できますか?

興味があれば私の完全なコード(必要ではないと思います):

//Express imports
const express = require('express'); //Main express lib
const morgan = require('morgan'); //Lib for loging get and post requests
const cors = require('cors'); //Only allowing the backend to talk to the frontend
const helmet = require('helmet'); //Deleting and adding html-headers to mask express

//Express app setup
const app = express();
app.use(express.json());
app.use(morgan('dev'));
app.use(helmet());
app.use(
    cors({
        origin: 'http://localhost:3000',
    })
);

//Postgresql import
const { Client } = require('pg'); //Main postgres nodejs lib

//Other
require('dotenv').config(); //Use environement variables definded in .env file

console.log(JSON.parse(process.env.PG_CLIENT_CONNECT_INFO));
//Create a connection client to database
const client = new Client({
    user: 'jonas',
    host: 'localhost',
    database: 'Blog_db',
    password: '1518',
    port: '5432',
});

client.connect().catch(err => {
    console.error(err);
});

//Get the blogs from the database in JSON format
app.get('/API/getBlogs', (req, res) => {
    const query = `
    SELECT * FROM blogs
    ORDER BY id ASC
    `;

    client
        .query(query)
        .then(response => {
            res.json(response.rows);
        })
        .catch(err => {
            console.error(err);
            res.send(err);
        });
});

//Add blogs to database as JSON object converted to SQL query
app.post('/API/addBlogs', (req, res) => {
    const query = `
        INSERT INTO blogs (author, title, content)
        VALUES ('${req.body.author}', '${req.body.title}', '${req.body.content}')
    `;

    client
        .query(query)
        .then(response => {
            console.log(`${response.rows} \n Successfully added requested data.`);
            res.sendStatus(200);
        })
        .catch(err => {
            console.error(err);
            res.send(err);
        });
});

const port = process.env.EXPRESS_PORT || 1337;
app.listen(port, () => {
    console.log(`The app is now listening on http://localhost:${port}`);
});
4

0 に答える 0