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

Sequelize TypeError求助:无法读取undefined的'define'属性

解决Sequelize初始化模型时的TypeError: 无法读取undefined的属性'define'问题

这个错误看起来晦涩,但根源其实很明确——你的代码里**Sequelize变量根本没被正确定义**,导致后续所有依赖Sequelize的引用(比如Sequelize.Model、Sequelize.STRING)全部失效,进而触发了Sequelize内部的配置读取错误。

具体修复步骤:

1. 正确引入Model和数据类型

你目前只引入了sequelize实例,但没获取到Model基类和DataTypes工具。可以通过两种方式解决:

方式一:从已有的sequelize实例中解构推荐
const sequelize = require("../_db");
// 从初始化好的sequelize实例里直接拿Model和DataTypes
const { Model, DataTypes } = sequelize;

console.log('this runs');
class User extends Model {} 
User.init(
  {
    avatar: {
      // 修正:默认值用defaultValue,类型直接声明
      defaultValue: defaultAvatar,
      type: DataTypes.URL // 用URL类型更贴合需求,也可以用STRING
    },
    email: {
      allowNull: false,
      type: DataTypes.STRING,
      unique: true
    },
    id: {
      defaultValue: DataTypes.UUIDV1,
      primaryKey: true,
      type: DataTypes.UUID
    },
    name: { type: DataTypes.STRING },
    password: {
      allowNull: false,
      get() {
        return () => this.getDataValue("password");
      },
      type: DataTypes.STRING
    },
    salt: {
      get() {
        return () => this.getDataValue("salt");
      },
      type: DataTypes.STRING
    }
  },
  { sequelize, modelName: "user" }
);
console.log('this should run now');
方式二:直接引入Sequelize模块
const { Sequelize, Model, DataTypes } = require('sequelize');
const sequelize = require("../_db");

class User extends Model {} 
// 字段定义同上,所有Sequelize.XXX替换为DataTypes.XXX
User.init(/* ... */, { sequelize, modelName: "user" });

2. 修正字段定义的语法错误

你原来的avatar字段写法不符合Sequelize规范:

  • 不要把类型嵌套在default对象里,默认值直接用defaultValue属性声明
  • 数据类型推荐使用DataTypes而非直接用Sequelize(这是v5+版本的最佳实践)

为什么会出现这个晦涩的错误?

当你尝试用未定义的Sequelize创建Model子类时,User类的初始化逻辑会出现异常,导致Sequelize内部在读取全局配置globalOptions.define时拿到了undefined,最终抛出了你看到的错误。这个错误信息之所以不直观,是因为它来自Sequelize的内部逻辑,而非直接提示你Sequelize变量未定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:24:33