ты мой последний шанс здесь. Поэтому я создал проект с пакетом generator-sql-fullstack и попытался развернуть его на герою.
К сожалению, я не могу подключиться к базе данных Heroku, поскольку получаю сообщение об ошибке R10. Я пробовал разные способы подключения к postgres через sequelize - ни один из них не работал. Главное было сделать его совместимым с ssl, но он все еще не подключается (или, может быть, я неправильно его использую)
Проект работает отлично, приложение также создается без ошибок.
Пожалуйста, ознакомьтесь с журналами Heroku и основными файлами для подключения. Надеюсь, вы сможете мне помочь здесь. Спасибо.
$ heroku logs
2016-04-18T21:27:36.994697+00:00 app[web.1]: > node server/app.js
2016-04-18T21:27:36.994705+00:00 app[web.1]:
2016-04-18T21:27:37.784886+00:00 app[web.1]: Express server listening on 55648, in production mode
2016-04-18T21:28:34.891786+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2016-04-18T21:28:34.891786+00:00 heroku[web.1]: Stopping process with SIGKILL
2016-04-18T21:28:35.750471+00:00 heroku[web.1]: Process exited with status 137
/server/config/environment/production.js
module.exports = {
database: 'DBNAME',
username: 'DBUSERNAME',
password: 'DBPASSWORD',
sql: {
host: 'DBHOST',
port: process.env.PORT || '5432',
dialect: 'postgres',
dialectOptions: {
ssl: true
}
}
};
/server/api/index.js
var sequelize = new Sequelize(config.database, config.username, config.password, config.sql);
Кроме этого, на стороне сервера ничего не трогало. Я предполагаю, что я использую Sequelize неправильно, но я следил за документацией (для адаптации SSL для heroku).
Пожалуйста, дайте мне знать, хотите ли вы видеть больше файлов конфигурации.
Спасибо за любой вклад!
Эта:
var sequelize = new Sequelize(process.env.DATABASE_URL);
должно быть достаточно для подключения к Heroku Postgres. Вы можете проверить, что DATABASE_URL в панели инструментов Heroku → YourApp → Настройки → Config Variables. Вы также можете взять учетные данные db из этой строки, но вам это не нужно.
process.env.PORT - это не порт базы данных, а порт, на котором вы должны запустить свой сервер (поэтому Heroku может выполнять свои внутренние функции маршрутизации), например:
server.listen(process.env.PORT || 5432)
Поэтому файл конфигурации должен выглядеть примерно так:
module.exports = {
port: process.env.PORT || 5432,
database: {
uri: process.env.DATABASE_URL
}
};
И подключение к базе данных:
var sequelize = new Sequelize(config.database.uri);