You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js启动/访问路由报错Error: No Sequelize instance passed如何解决

问题根因

报错直接触发原因是你在lbDB.js中调用initUser、initSector等模型初始化方法时,传入的sequelize实例为undefined,核心有两个错误:

  1. 仅声明了sequelize变量,没有调用new Sequelize()完成数据库连接实例的初始化
  2. 代码执行顺序错误,还没完成sequelize实例创建,就先调用模型初始化方法传入空值

修复步骤

1. 调整lbDB.js的代码执行顺序,补全sequelize实例初始化逻辑

修正后的完整lbDB.js代码如下:

const Sequelize = require("sequelize");
const configs = require("./config/config");

const { initUser } = require("./models/USERS/user");
const { initSector } = require("./models/USERS/sector");
const { initArchives } = require("./models/ARCHIVES/archives");


if (Sequelize.Promise) {
    Sequelize.Promise.config({
        // Enables all warnings except forgotten return statements.
        warnings: {
            wForgottenReturn: false
        }
    });
}

const env = process.env.NODE_ENV || "development";
const config = configs[env];

if (config.logging)
    config.logging = console.log;

/**
 * @type {Sequelize} conexão com o banco de dados.
 */
// 此处补全sequelize实例初始化
const sequelize = new Sequelize(config.database, config.username, config.password, config);

// 先创建sequelize实例,再调用模型初始化方法
const db = {
    db:sequelize,
    // 此时传入的sequelize已经是初始化完成的实例
    User: initUser(sequelize),
    Sector: initSector(sequelize),
    Archives: initArchives(sequelize)
};

Object.keys(db).forEach(modelName => {
    if ("associate" in db[modelName])
        db[modelName].associate(db);
});

module.exports = db;

2. 附加路由问题修正(非报错必须,按需调整)

你当前的路由配置存在路径重复前缀问题:

  • app.js中配置了app.use("/users", users)
  • /routes/users.js中又配置了router.get("/users", listUsers)
    最终实际访问路径为/users/users,如果你预期访问路径是/users,可以将routes/users.js中的路由改为:
router.get("/", listUsers);
router.post("/", addUsers);
router.put("/:id", updateUsers);
router.delete("/:id", deleteUsers);

内容的提问来源于stack exchange,提问作者akhaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:24:08