Как исправить ошибку HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND 5432 при подключении к PostgreSQL на NodeJS?
Здравствуйте!
Нужно присоединиться к базе 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
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Проблема 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); });
Поменяйте значения 'database', 'username', 'password' и 'localhost' на соответствующие значения для вашей базы данных PostgreSQL. После этого перезапустите ваше приложение и проверьте, исправилась ли ошибка HostNotFoundError.
Надеюсь, эти рекомендации помогут вам исправить ошибку подключения к базе данных PostgreSQL на Node.js. Если у вас остались вопросы или проблемы, не стесняйтесь задавать их.