未处理的拒绝类型错误:依赖名称必须作为非空字符串给出

syg*_*syg 3 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_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)
Run Code Online (Sandbox Code Playgroud)

我正在sequelize@3.2.0HapiJS. 可以在此处找到类似的存储库。(这个 repo 确实有效,即使sequelize升级到最新版本)

Var*_*mar 13

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

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

addressId: {
    type: DataTypes.INTEGER,
    references: {
        model: 'addresses',
        key: 'id'
    }
}
Run Code Online (Sandbox Code Playgroud)

我宣布它为

addressId: {
    type: DataTypes.INTEGER,
    references: 'addresses',
    referencesKey: 'id'
}
Run Code Online (Sandbox Code Playgroud)


syg*_*syg 4

这是由我的模型文件之一中的不正确的自引用键引起的。

  • 你有更精确的吗? (2认同)