Как исправить ошибку HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND 5432 при подключении к PostgreSQL на NodeJS?

Ссылка скопирована
1 ответ

Здравствуйте!
Нужно присоединиться к базе PostgreSQL через NodeJS.
Файл index.js:

require('dotenv').config() const express = require('express') const sequelize = require('./db') const models = require('./models/models')  const PORT = process.env.PORT || 5000  const app = express()   const start = async () => {     try {         await sequelize.authenticate()         await sequelize.sync()         app.listen(PORT, () => console.log(`Server started on port ${PORT}`))     } catch (e) {         console.log(e)     } }  start()

require('dotenv').config() const express = require('express') const sequelize = require('./db') const models = require('./models/models') const PORT = process.env.PORT || 5000 const app = express() const start = async () => { try { await sequelize.authenticate() await sequelize.sync() app.listen(PORT, () => console.log(`Server started on port ${PORT}`)) } catch (e) { console.log(e) } } start()

файл db.js:

const {Sequelize} = require('sequelize')  module.exports = new Sequelize(     process.env.DB_NAME, // название БД     process.env.DB_USER, // пользователь     process.env.DB_PASSWORD, // пароль     {         dialect: 'postgres',         host: process.env.DB_HOST,         host: process.env.DB_PORT     } )

const {Sequelize} = require('sequelize') module.exports = new Sequelize( process.env.DB_NAME, // название БД process.env.DB_USER, // пользователь process.env.DB_PASSWORD, // пароль { dialect: 'postgres', host: process.env.DB_HOST, host: process.env.DB_PORT } )

файл .env:

PORT=5000 DB_NAME=online_store DB_USER=postgres DB_PASSWORD=root DB_HOST=localhost DB_PORT=5432

PORT=5000 DB_NAME=online_store DB_USER=postgres DB_PASSWORD=root DB_HOST=localhost DB_PORT=5432

PostgreSQL установлена на компьютере, но вылезает в консоли ошибка:
HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND 5432
at Client._connectionCallback (D:OpenServerdomainstestnodereact.localservernode_modulessequelizelibdialectspostgresconnection-manager.js:133:2
4)
at Client._handleErrorWhileConnecting (D:OpenServerdomainstestnodereact.localservernode_modulespglibclient.js:305:19)
at Client._handleErrorEvent (D:OpenServerdomainstestnodereact.localservernode_modulespglibclient.js:315:19)
at Connection.emit (events.js:400:28)
at Socket.reportStreamError (D:OpenServerdomainstestnodereact.localservernode_modulespglibconnection.js:52:12)
at Socket.emit (events.js:400:28)
at emitErrorNT (internal/streams/destroy.js:106:8)
at emitErrorCloseNT (internal/streams/destroy.js:74:3)
at processTicksAndRejections (internal/process/task_queues.js:82:21) {
parent: Error: getaddrinfo ENOTFOUND 5432
parent: Error: getaddrinfo ENOTFOUND 5432
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: '5432'
},
original: Error: getaddrinfo ENOTFOUND 5432
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
errno: -3008,
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: '5432'
}
}

Дополнительно:

А теперь внимание на свой конфиг

dialect: 'postgres',         host: process.env.DB_HOST,         host: process.env.DB_PORT

dialect: 'postgres', host: process.env.DB_HOST, host: process.env.DB_PORT

и на ошибку

syscall: 'getaddrinfo', hostname: '5432'

syscall: 'getaddrinfo', hostname: '5432'

Дальше надо подсказывать или уже увидел?

  • Понимаю что тут коннект на порт, затирая им настоящих хост но не понимаю как решить эту проблему
  • dandans, очевидно же
    host: process.env.DB_HOST, port: process.env.DB_PORT,

    host: process.env.DB_HOST, port: process.env.DB_PORT,

  • Дмитрий, поставил запятые и ошибка осталась
  • во второй строке у себя в конфиге заменяем host на port
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Максим Павлов Ответ

Проблема HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND 5432 обычно возникает, когда ваше приложение Node.js не может найти хост PostgreSQL базы данных. Это может быть вызвано неправильными настройками подключения к базе данных, неверным адресом хоста или проблемами с сетью.

Чтобы исправить эту ошибку, следуйте этим шагам:

1. Проверьте правильность настроек подключения к базе данных PostgreSQL в вашем приложении Node.js. Убедитесь, что вы правильно указали хост, порт, имя базы данных, пользователя и пароль.

2. Убедитесь, что PostgreSQL сервер запущен и доступен. Попробуйте подключиться к базе данных с помощью утилиты psql или другого клиентского приложения, чтобы убедиться, что сервер работает корректно.

3. Проверьте сетевые настройки вашего сервера и базы данных. Убедитесь, что сервер, на котором запущено ваше приложение Node.js, имеет доступ к серверу базы данных PostgreSQL по указанному адресу хоста и порту.

4. Проверьте файрволлы и другие средства безопасности на серверах. Убедитесь, что соединение к базе данных не блокируется каким-либо программным или аппаратным обеспечением.

5. Попробуйте использовать IP-адрес вместо имени хоста при настройке подключения к базе данных PostgreSQL. Иногда проблемы с DNS могут вызывать ошибку HostNotFoundError.

Вот пример кода, как можно настроить подключение к базе данных PostgreSQL в приложении Node.js с использованием Sequelize:

const { Sequelize } = require('sequelize');
 
const sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'postgres'
});
 
sequelize.authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });

const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'postgres' }); sequelize.authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); });

Поменяйте значения 'database', 'username', 'password' и 'localhost' на соответствующие значения для вашей базы данных PostgreSQL. После этого перезапустите ваше приложение и проверьте, исправилась ли ошибка HostNotFoundError.

Надеюсь, эти рекомендации помогут вам исправить ошибку подключения к базе данных PostgreSQL на Node.js. Если у вас остались вопросы или проблемы, не стесняйтесь задавать их.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно