Я пытаюсь запустить свой сервер node- express с GraphQL и Knex и подключить его к базе данных PostgresQL в heroku.
Когда я запускаю heroku bash CLI и пытаюсь migrate Я получаю эту ошибку
~ $ npm run migrate
> syncify-server@0.0.0 migrate /app
> knex migrate:latest
Using environment: staging
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! syncify-server@0.0.0 migrate: `knex migrate:latest`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the syncify-server@0.0.0 migrate script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /app/.npm/_logs/2020-06-21T00_20_17_455Z-debug.log
Он отлично работает локально в разработке. Мой knex. js файл
import dotenv from 'dotenv'
import knex from 'knex'
import mockKnex from 'mock-knex'
dotenv.config()
let knexConnection
if (process.env.NODE_ENV === 'test') {
knexConnection = knex({
client: 'pg',
debug: false,
})
mockKnex.mock(knexConnection)
} else {
knexConnection = knex({
client: 'pg',
connection: {
url: process.env.DATABASE_URL,
type: 'postgres',
charset: 'utf8',
ssl: false
},
})
}
export default knexConnection
и knexfile. js
require('dotenv').config()
module.exports = {
development: {
client: 'pg',
connection: {
url: process.env.DATABASE_URL,
charset: 'utf8',
},
},
staging: {
client: 'pg',
connection: {
url: process.env.DATABASE_URL,
charset: 'utf8',
},
pool: {
min: 2,
max: 10,
},
migrations: {
tableName: 'knex_migrations',
},
},
production: {
client: 'pg',
connection: {
url: process.env.DATABASE_URL,
charset: 'utf8',
},
pool: {
min: 2,
max: 10,
},
migrations: {
tableName: 'knex_migrations',
},
},
}
Я пытался изолировать проблему, но чувствую, что у меня может быть больше одного.
В конфигурационных варах у меня есть DATABASE_URL
как URL-адрес heroku psql db и NODE_ENV
как «промежуточный», а также все настройки auth0.
Я могу получить доступ онлайн-базу данных, используя psql
в командной строке. У меня есть правильные таблицы, и я могу создавать и извлекать данные с помощью операторов SQL.
Когда я настраиваю свой локальный сервер для использования heroku psql db, я получаю сообщение об ошибке relation "users" does not exist
То же самое, если я попробую другие таблицы в базе данных.
Я попытался изменить свой SSL на true, который вызывал ошибки, и на false, который, похоже, ничему не повредил. (Я пробовал много других вещей)
Если я попаду на онлайн-сервер heroku, он просто выдаст общую c ошибку без каких-либо деталей.
Исходный код здесь