Сбои приложения при запросе NodeJS для разговора с PostgreSQL - PullRequest
0 голосов
/ 23 октября 2019

У меня есть опыт работы с веб-разработкой, но на всех сайтах, которые я создал на сегодняшний день, есть встроенные базы данных. Это моя первая попытка создать сайт с не встроенной базой данных.

Я создал скелетный сайт, используя NodeJS и Express рамки. Он принимается Heroku . До того, как я попытался добавить базу данных, приложение, казалось, работало хорошо, как и ожидалось.

Однако теперь, когда я добавил в приложение файл scraper.js, все, что я получаю, это уведомление о том, чтоприложение упало. Содержимое этого файла:

const Finaliser = require("./finaliser.js");
const { Client } = require("pg");
const client = new Client({
  connectionString: process.env.DATABASE_URL,
  ssl: true,
});

class Scraper
{
  constructor()
  {
    this.finaliser = new Finaliser();
  }

  fetchAsIs(req, res)
  {
    var data, columns, rows;
    var tableName = req.params.id;
    var that = this;
    var queryString = "SELECT * FROM "+tableName+";";

    client.connect();
    client.query(queryString, (err, extract) => {
      if(err) throw err;

      client.end();

      console.log(extract);
      that.finaliser.protoRender(req, res, "asis",
                                 { title: tableName });
    });
  }
};

module.exports = Scraper;

Дополнительные сведения:

  • Запуск heroku logs --tail дает:
2019-10-23T15:35:50.281517+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=harvesthub.herokuapp.com request_id=caadba91-9b2d-4525-9c9c-19c34733073d fwd="194.33.13.237" dyno= connect= service= status=503 bytes= protocol=https
2019-10-23T15:35:50.588155+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=harvesthub.herokuapp.com request_id=28b7948f-ff59-44f0-867a-f3ce7ede86cc fwd="194.33.13.237" dyno= connect= service= status=503 bytes= protocol=https
  • Я думаю, что база данных настроена правильно. Запуск heroku addons --app harvesthub дает:
Add-on                                            Plan       Price  State  
────────────────────────────────────────────────  ─────────  ─────  ───────
heroku-postgresql (postgresql-crystalline-06305)  hobby-dev  free   created
 └─ as DATABASE

The table above shows add-ons and the attachments to the current app (harvesthub) or other apps.
  • Хранилище для исходного кода приложения: https://github.com/tomhosker/harvesthub.

  • Я знаю, что "SELECT * FROM "+tableName+";"это рецепт печали. Я изменю это позже.

  • Извините за такой длинный вопрос!

1 Ответ

0 голосов
/ 24 октября 2019

Проблема заключалась в том, что мне не удалось правильно установить пакеты pg и dotenv. (Я попытался установить их, но по какой-то причине это не потребовалось.)

Любому, кто оказался в том же положении, что и я: дважды проверьте, что pg и dotenv в вашем package.json файле. Если они отсутствуют, запустите npm install --save pg dotenv, чтобы установить их.

Сердечно благодарю Джастина Мозера. Этот ответ является лишь дополнением к его комментарию.

...