使用Sequelize CLI执行迁移回滚时遇this.lib.Database is not a constructor错误
解决Sequelize CLI迁移报错
this.lib.Database is not a constructor 排查与修复方案
检查数据库驱动版本兼容性
Sequelize 6.x对数据库驱动版本有明确要求,比如mysql2需2.3.x及以上、pg需8.x及以上,版本不匹配会导致构造函数调用失败。以mysql2为例:- 卸载当前驱动:
npm uninstall mysql2 - 安装兼容版本:
npm install mysql2@2.3.3
- 卸载当前驱动:
彻底清理依赖并重装
仅重装sequelize无法解决缓存或跨依赖冲突问题:- 删除
node_modules文件夹:Windows执行rmdir /s /q node_modules,Mac/Linux执行rm -rf node_modules - 删除
package-lock.json或yarn.lock文件 - 重装全部依赖:
npm install
- 删除
验证数据库配置文件
检查config/config.json的development环境配置:- 确认
dialect字段拼写正确(如mysql而非mysql2) - 若手动指定过
dialectModulePath,需确保路径正确且模块存在
示例正确配置:
{ "development": { "username": "root", "password": "your_db_password", "database": "dev_database", "host": "127.0.0.1", "dialect": "mysql" } }- 确认
同步Sequelize CLI与ORM版本
尽管CLI 6.6.0与ORM 6.21.0理论兼容,但版本细微差异仍可能引发问题:- 卸载现有包:
npm uninstall sequelize sequelize-cli - 安装匹配版本:
npm install sequelize@6.21.0 sequelize-cli@6.6.0
- 卸载现有包:
排查全局CLI冲突
全局安装的Sequelize CLI可能与本地版本冲突:- 查看全局包:
npm list -g sequelize-cli - 卸载全局CLI:
npm uninstall -g sequelize-cli - 使用本地CLI执行命令:
npx sequelize db:migrate:undo:all
- 查看全局包:
内容的提问来源于stack exchange,提问作者Abdul-Latif
相关产品推荐
相关产品推荐

