升级Sequelize至v6后acl-sequelize出现.nodeify函数错误求助
问题分析与解决建议
问题详情
错误信息:控制台报错来自backend.js的代码片段 }).nodeify(cb); 不是一个函数。
环境配置:
Node版本: v18.14.2 也测试过v16.14.2 Sequelize版本: 6.31.1(当前最新版本) acl-sequelize版本: 0.3.5(当前最新版本)
问题根源:Sequelize v6做了破坏性变更,移除了Sequelize.Promise属性,改用全局Promise对象;但acl-sequelize仍依赖Sequelize v5(具体为5.9.4版本),其内部代码依赖Sequelize.Promise,导致迁移后代码失效。
可行解决办法
临时兼容补丁:在项目初始化Sequelize的代码最前面,手动给Sequelize挂载Promise属性:
const Sequelize = require('sequelize'); // 兼容依赖Sequelize.Promise的第三方包 Sequelize.Promise = global.Promise;这个操作能快速让
acl-sequelize恢复正常工作。跟进依赖更新:检查
acl-sequelize的代码仓库,确认是否有兼容Sequelize v6的版本计划或已发布版本,若有直接升级到对应版本即可。自定义修改依赖:如果
acl-sequelize长期无更新,可以fork该仓库,将内部所有使用Sequelize.Promise的地方替换为全局Promise,然后把修改后的包作为项目依赖引入。临时降级Sequelize:若以上方案都无法落地,可暂时将Sequelize降级回v5版本,等
acl-sequelize支持v6后再重新执行迁移。
内容的提问来源于stack exchange,提问作者Jose Enrique Lopez
相关产品推荐
相关产品推荐

