Как подключить в npm сайт к базе postgres?

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

Привет. разрабатываю сайт с 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 это фронтенд. Он ни про какую базу данных не знает и тем более подключаться к ней не может. Не там копаете в общем ))

  • Алексей Ярков, хорошо,где копать тогда. все разрешения на uip ардеса я уже прописал и в drf и в postgres. где копать?
  • Алексей Ярков, Вот что и где я менял:
    $ 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; ...

  • David It, https://qna.habr.com/help/rules#3.8 - к логам, ошибками и не форматированному тексту это тоже относится. Будьте любезны поправить свой вопрос.

    Вот что и где я менял:

    node_modules/react-scripts/config/webpackDevServer.config.js

    node_modules/react-scripts/config/webpackDevServer.config.js

    А вот и не угадали - так делать нельзя. Это библиотечный каталог.
    RTFM:

    1. https://metanit.com/web/nodejs/2.4.php
    2. 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

      Бэк подключается к БД - если он не может подключиться, то пишет ошибку. По этой ошибке можно провести дебаг, найти причину и исправить её. Соответственно, вам это и следует сделать - провести дебаг и понять в какой момент и что именно пошло не так.

    Нужно решить такую задачу?

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

    Заказать помощь
    Лучший ответ
    1
    Сергей Миронов Ответ

    Для подключения сайта к базе данных PostgreSQL через npm, вам необходимо сначала установить драйвер базы данных для PostgreSQL. Для этого вы можете воспользоваться пакетом `pg`:

    npm install 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;

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

    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 запущен и доступен для подключения.

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

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

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

    комментарий

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

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