Sequelize连接wikistack库报Connection terminated unexpectedly错误
报错根因
这个连接错误是配置错误直接导致的:
- 数据库连接端口配置错误:PostgreSQL 服务默认监听端口是
5432,你在连接串里写的1337是给Express web服务分配的监听端口,Sequelize按照这个配置会把数据库请求发给Express服务,根本碰不到PostgreSQL服务,自然会触发连接意外终止的报错。 - Promise未做错误捕获:
db.authenticate()是异步Promise方法,你只写了.then()的成功回调,没有写.catch()处理连接失败的场景,连接失败时就会抛出UnhandledPromiseRejectionWarning警告。 - 代码里残留了无意义的
enter code here文本,属于编辑时的冗余内容,虽然不直接触发报错,但建议清理。
修复方案
- 修改
/models/index.js中的数据库连接串,把端口替换为PostgreSQL的默认服务端口,如果你本地PostgreSQL自定义过端口、设置了账号密码,对应调整连接串参数即可,默认配置参考如下:
const Sequelize = require('sequelize'); const db = new Sequelize('postgres://localhost:5432/wikistack'); module.exports = { db }
- 清理
app.js中db.authenticate()行尾残留的enter code here文本,补上Promise的错误捕获逻辑,相关代码修改为:
db.authenticate() .then(() => { console.log('connected to the database'); }) .catch(err => { console.error('数据库连接失败:', err); })
- 启动项目前先确认本地PostgreSQL服务处于运行状态,且
wikistack数据库已经提前创建完成。
如果修改完以上配置仍无法连接,依次检查:PostgreSQL服务是否正常启动、本地防火墙是否拦截了5432端口、PostgreSQL的pg_hba.conf配置是否允许本地localhost连接。
内容的提问来源于stack exchange,提问作者FEI LI
相关产品推荐
相关产品推荐

