我可以进行本地连接,并且在仅将DATABASE_URL更改为托管在Heroku上的另一个数据库时也可以进行连接,但是我无法使特定的Azure托管数据库工作,这总是会导致超时错误:
错误R10( Boot 超时)-〉Web进程无法在启动的60秒内绑定到$PORT
db.js
const dbnexus = new Sequelize(process.env.DATABASE_URL, {
dialect: 'postgres',
logging: true,
operatorsAliases: Sequelize.Op.Aliases,
dialectOptions: {
ssl: {
require: true,
rejectUnauthorized: false,
},
},
});
app.js
dbnexus
.authenticate()
.then(() => dbnexus.sync())
.then(() =>
app.listen(process.env.PORT || 3000, (res) => {
console.log(`[server]: App is listening on ${process.env.PORT}`);
})
)
.catch((e) => {
console.log('[server]: Server Crashed');
console.log(e);
});
我的Heroku环境:
DATABASE_URL = [matches local environment DATABASE_URL connection string]
PGSSLMODE = require
SSLMODE = require
关于这个错误的所有其他问题都是关于如何设置端口的问题,但是我是按照他们建议的方式来做的,而且它可以与不同的数据库一起工作,所以我不认为这是真正的问题。
1条答案
按热度按时间6ie5vjzr1#
我发现了这个问题。Heroku不使用静态IP,所以服务器不允许它通过。我不知道为什么这会产生一个超时错误,而不是更多的信息。我最终使用了一个代理(QuotaGuard与qgtunnel是我唯一可以与Sequelize和Postgres一起工作的东西),然后将创建的静态IP列入白名单。