Express, Heroku, Postgres объявление: Pool не является конструктором - PullRequest
0 голосов
/ 05 августа 2020

Я очень запутался. Этот код работает на компьютере моего соавтора, но не на моем. У нас одно и то же рабочее пространство Heroku. Я буквально просто скопировал его последний pu sh.

const express = require("express");
const path = require("path");
var parser = require("body-parser");
// heroku has an environment variable
// that determines port
const PORT = process.env.PORT || 5000;
// pool controls connections to the postgres db
const { Pool } = require("pg");
const { SSL_OP_SSLEAY_080_CLIENT_DH_BUG } = require("constants");
const pool = new Pool({
  connectionString:
    "postgres://{heroku pg database URL}",
  ssl: {
    rejectUnauthorized: false,
  },
});

app = express();

app.get("/", (req, res) => {
    res.status(200);
    res.send('Hello World');
  });

app.listen(PORT, () => {
    console.log(
      "Server running at https://rateyourgames.heroku.com/ using port" + PORT
    );
    console.log(process.DATABASE_URL);
  });

Это дает мне эту ошибку:

C:\Users\matth\Full-Stack-Project\src\test.js:10
const pool = new Pool({
             ^

TypeError: Pool is not a constructor
    at Object.<anonymous> (C:\Users\matth\Full-Stack-Project\src\test.js:10:14)
    at Module._compile (internal/modules/cjs/loader.js:1201:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1221:10)
    at Module.load (internal/modules/cjs/loader.js:1050:32)
    at Function.Module._load (internal/modules/cjs/loader.js:938:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47

Обновление: я обнаружил, что моя версия pg не соответствует зависимости мой pg - версия 6.14.5, а зависимость - "^8.3.0". Я пробовал запустить npm i -g pg@8.3.0, но даже несмотря на то, что консоль сообщает, что пакет обновлен, он все равно говорит, что у меня версия 6.14.5.

1 Ответ

1 голос
/ 05 августа 2020

Не используйте npm i -g для зависимостей проекта.

-g - это глобальный флаг , поэтому зависимости устанавливаются либо на уровне системы, либо на уровне пользователя. Для зависимостей приложения вы должны установить зависимости в node_modules/ папку в каталоге проекта .

Чтобы установить новую зависимость, запустите что-то вроде

npm install pg

Это добавляет pg к dependencies вашего проекта в package.json. Он также обновляет ваш package-lock.json. Оба этих файла должны быть ( вероятно ) зафиксированы, а ваш каталог node_modules/ должен ( вероятно ) игнорироваться.

Если вы не устанавливаете новый зависимости, а просто хотите установить все зависимости проекта, просто запустите

npm install
...