Как подключить в npm сайт к базе postgres?
Привет. разрабатываю сайт с django rest framework+react. перенс из тестовой виртуальной машины в виртуальное облако timewebcloud и столнулся с проблемой, что при подключении к сайту в сервере сайт запускается без информации из базы postgres.
Подключение к базе есть, так как я базу через django подцепил и по 8000 порту если подключаешься соединение есть
$ psql -U tUSER -d tDB -h tIP
Но когда я пытаюсь настроить react.js и запускаю его
$ npm run build
$ sudo npm install -g serve
$ serve -s build
сайт он запускает а информацию из базы не отображает. то есть тут соединение с самой базой.
В виртуальной тестовой машине, соединение есть, а в облаке нету.
Где правится соединение с базой npm?
Дополнительно:
Знатная у вас каша получилась ))
React это фронтенд. Он ни про какую базу данных не знает и тем более подключаться к ней не может. Не там копаете в общем ))
$ cat node_modules/react-scripts/config/webpackDevServer.config.js ... // want to allow setting the allowedHosts manually for more complex setups allowedHosts: disableFirewall ? 'all' : [allowedHost], headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': '*', 'Access-Control-Allow-Headers': '*', }, allowedHosts: [ // Ваш список разрешенных хостов здесь 'localhost', '127.0.0.1', 'IPADDR1' ], ... $ cat settings.py ... ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'IPADDR1', 'HOST1'] ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'BASE', 'USER': 'USER', 'PASSWORD': 'PASSWORD', 'HOST': 'IPADDR1', 'PORT': '5432', } } $ cat /etc/postgresql/14/main/pg_hba.conf ... listen_addresses = 'localhost, 127.0.0.1, IPADDR1, IPADDR2, HOST1' # what IP address(es) to listen on; ... |
$ cat node_modules/react-scripts/config/webpackDevServer.config.js ... // want to allow setting the allowedHosts manually for more complex setups allowedHosts: disableFirewall ? 'all' : [allowedHost], headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': '*', 'Access-Control-Allow-Headers': '*', }, allowedHosts: [ // Ваш список разрешенных хостов здесь 'localhost', '127.0.0.1', 'IPADDR1' ], ... $ cat settings.py ... ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'IPADDR1', 'HOST1'] ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'BASE', 'USER': 'USER', 'PASSWORD': 'PASSWORD', 'HOST': 'IPADDR1', 'PORT': '5432', } } $ cat /etc/postgresql/14/main/pg_hba.conf ... listen_addresses = 'localhost, 127.0.0.1, IPADDR1, IPADDR2, HOST1' # what IP address(es) to listen on; ...
Вот что и где я менял:
node_modules/react-scripts/config/webpackDevServer.config.jsnode_modules/react-scripts/config/webpackDevServer.config.js
А вот и не угадали - так делать нельзя. Это библиотечный каталог.
RTFM:
- https://metanit.com/web/nodejs/2.4.php
- https://create-react-app.dev/
/etc/postgresql/14/main/pg_hba.conf listen_addresses = 'localhost, 127.0.0.1, IPADDR1, IPADDR2, HOST1'/etc/postgresql/14/main/pg_hba.conf listen_addresses = 'localhost, 127.0.0.1, IPADDR1, IPADDR2, HOST1'
Если у вас там не приватная сеть с приватным сетевыми адаптерами - то так делать нельзя. Изучайте основы сетевой безопасности и правильной настройки БД на сервере.
Ответы:
Для начала вам следует подучить матчасть, чтобы понимать как работают сайты и сети на базовом уровне, а так же разобраться на чем именно у вас сайт создан: на NodeJS, где традиционно и применяется пакетный менеджер npm или на питоне и джанго, где традиционно применяется пакетный менеджер pip. Подключение к БД осуществляется на стороне бэкэнда, а react - это библиотека для фронтенда.
- То есть эта проблема на стороне drf?
- Вот где вы там подключаетесь к БД - вот там и смотрите и изучайте, что, как и куда подключается и что для этого надо сделать.
- VoidVolker, в гугле мало инфы именно настроки бэкенда. есть какаято точная информация по настроке серверной части адрес я вроде прописал везде и в drf и в postgres и даже в node.js. ничего не помогло. где еще информацию искать? именно про это
- Как это мало? Значит либо не то ищите либо не там - инструкций, статей и мануалов полно. Повторюсь еще раз:
разобраться на чем именно у вас сайт создан: на NodeJS, где традиционно и применяется пакетный менеджер npm или на питоне и джанго, где традиционно применяется пакетный менеджер pip
Бэк подключается к БД - если он не может подключиться, то пишет ошибку. По этой ошибке можно провести дебаг, найти причину и исправить её. Соответственно, вам это и следует сделать - провести дебаг и понять в какой момент и что именно пошло не так.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для подключения сайта к базе данных PostgreSQL через npm, вам необходимо сначала установить драйвер базы данных для PostgreSQL. Для этого вы можете воспользоваться пакетом `pg`:
npm install pg
После установки пакета `pg`, вам нужно будет создать файл, в котором будет содержаться информация о подключении к вашей базе данных. Например, вы можете создать файл `db.js` и добавить в него следующий код:
const { Pool } = require('pg'); const pool = new Pool({ user: 'your_username', host: 'localhost', database: 'your_database', password: 'your_password', port: 5432, }); module.exports = pool;
Замените `'your_username'`, `'your_database'` и `'your_password'` на ваши реальные данные для доступа к базе данных PostgreSQL.
Теперь вы можете использовать этот модуль для подключения к базе данных в вашем сайте. Например, вы можете создать файл `app.js` и добавить следующий код для выполнения запроса к базе данных:
const pool = require('./db'); pool.query('SELECT * FROM your_table', (err, res) => { if (err) { console.error(err); return; } console.log(res.rows); pool.end(); });
Замените `'your_table'` на имя таблицы, к которой вы хотите выполнить запрос.
Теперь у вас должно получиться успешное подключение к базе данных PostgreSQL через npm. Не забудьте убедиться, что ваш сервер PostgreSQL запущен и доступен для подключения.