Sequelize.js 未处理的拒绝类型错误:依赖项名称必须作为非空字符串提供

Sequelize.js 未处理的拒绝类型错误:依赖项名称必须作为非空字符串提供,sequelize.js,hapijs,Sequelize.js,Hapijs,当代码遇到require('./models').sequelize.sync()时,我遇到了这个错误。(models是通过运行命令sequelize init创建的目录)有人能给我一些关于导致此错误的提示吗 > node src/server.js Unhandled rejection TypeError: Dependency name must be given as a not empty string at /Users/syg/Repos/example/node_

当代码遇到
require('./models').sequelize.sync()
时,我遇到了这个错误。(
models
是通过运行命令
sequelize init
创建的目录)有人能给我一些关于导致此错误的提示吗

> node src/server.js

Unhandled rejection TypeError: Dependency name must be given as a not empty string
    at /Users/syg/Repos/example/node_modules/sequelize/node_modules/toposort-class/toposort.js:37:31
    at Array.forEach (native)
    at Toposort.self.add (/Users/syg/Repos/example/node_modules/sequelize/node_modules/toposort-class/toposort.js:35:22)
    at /Users/syg/Repos/example/node_modules/sequelize/lib/model-manager.js:89:12
    at Array.forEach (native)
    at ModelManager.forEachModel (/Users/syg/Repos/example/node_modules/sequelize/lib/model-manager.js:58:15)
    at /Users/syg/Repos/example/node_modules/sequelize/lib/sequelize.js:862:23
    at tryCatcher (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/util.js:24:31)
    at Promise._settlePromiseFromHandler (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:454:31)
    at Promise._settlePromiseAt (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:530:18)
    at Promise._settlePromiseAtPostResolution (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/promise.js:224:10)
    at Async._drainQueue (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:182:12)
    at Async._drainQueues (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:187:10)
    at Immediate.Async.drainQueues [as _onImmediate] (/Users/syg/Repos/example/node_modules/sequelize/node_modules/bluebird/js/main/async.js:15:14)
    at processImmediate [as _immediateCallback] (timers.js:358:17)

我正在使用
sequelize@3.2.0
带有
HapiJS
。类似的回购协议也可以找到。(即使升级到最新版本,此repo也确实有效)

这是由于我的一个模型文件中的一个错误的自引用密钥造成的。

这是由于根据先前版本的sequelize声明了外键

根据最新版本“sequelize”:“^4.31.2”,添加外键的正确方法是-

addressId: {
    type: DataTypes.INTEGER,
    references: {
        model: 'addresses',
        key: 'id'
    }
}
我宣布它是

addressId: {
    type: DataTypes.INTEGER,
    references: 'addresses',
    referencesKey: 'id'
}

您有更精确的吗?@user1843507我现在没有代码,但您最好仔细查看指定1toN/MtoN关系的代码,尤其是变量名。例如。我有一个老式的数据库,没有真正的外键,连接(外键)只是普通的整数,所以在模型中将它们注册为FK-s会出错。