0

你是我最後的機會。所以我用generator-sql-fullstack包建立了一個項目並試圖將它部署到heroku。在heroku上使用generator-sql-fullstack拒絕連接

不幸的是,我無法連接到Heroku數據庫,因爲我得到錯誤R10。 我試過不同的方式通過sequelize連接到postgres - 他們都沒有工作。最主要的是讓它兼容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,但我遵循了文檔(以適應heroku的SSL)。

請讓我知道如果你想看到更多的配置文件。

感謝您的任何意見!

回答

0

此:

var sequelize = new Sequelize(process.env.DATABASE_URL); 

應該足夠用於連接到Heroku的Postgres的。您可以在Heroku儀表板 - >您的應用程序 - >設置 - >配置變量中檢查DATABASE_URL。您也可以從該字符串獲取數據庫憑據,但不需要。

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); 
+0

是的,我已經試過了..同ISSU即有沒有辦法手動調試連接?我很沮喪.. –

+0

錯誤R10(引導超時) - > Web進程無法在啓動後的60秒內綁定到$ PORT - 這不是Sequelize或Postgres問題。 但您可以使用任何pg數據庫管理器或使用heroku cli連接到您的數據庫:heroku pg:psql --app yourappname DATABASE –