Node+Sequelize出现Unhandled rejection ReferenceError怎么解决?
解决Sequelize中的Unhandled rejection ReferenceError错误
嘿,我来帮你理清楚这个问题——你遇到的两个小问题叠加起来导致了这个报错,咱们一步步解决:
错误原因分析
err未定义的问题:你的catch回调函数没有接收错误参数,导致在console.error里引用err时抛出了新的ReferenceError。- 模型名称大小写错误:你定义的模型变量是小写的
user,但在create方法里用了大写的User,这会先抛出一个找不到变量的错误,这个错误传递到catch后,又因为第一个问题引发了未处理的拒绝。
简单的修正方案
只需要调整两个地方,就能正确捕获所有错误:
const connection = new Sequelize('db','miki','passw', { host: 'localhost', dialect : 'sqlite', storage: 'db.sqlite', operatorsAliases : false // 这里注意你原来写的是'false'字符串,应该用布尔值false避免潜在问题 }) const user = connection.define('User', { name : Sequelize.STRING, bio : Sequelize.TEXT }); connection.sync({ logging : console.log }) .then(() => { user.create({ name: 'Beba', bio: 'devops engineer' }) }) // 把大写User改成定义好的小写user .then(() => { console.log('Connection to db established'); }) .catch((err) => { console.error('Unable to connect or perform operation:', err); }); // 接收err参数才能打印错误详情
额外说明:更精细的错误捕获
如果你想分别处理数据库同步错误和创建用户的错误,可以拆分Promise链,给每个异步操作单独加catch,这样能精准定位问题:
connection.sync({ logging : console.log }) .then(() => { return user.create({ name: 'Beba', bio: 'devops engineer' }) .catch(createErr => { console.error('Failed to create user:', createErr); throw createErr; // 可选:如果想让错误继续冒泡到外层统一处理 }); }) .then(() => { console.log('Connection to db established'); }) .catch(syncErr => { console.error('Failed to sync database:', syncErr); });
内容的提问来源于stack exchange,提问作者MikiBelavista
相关产品推荐
相关产品推荐

