TypeError: Cannot read property 'define' of undefined

i try to change my Db from mongodb to mysql, i use sequelize instead of mongoose, and i got this error, i created the User.js model with sequelize format, but something wrong and i don't know why

const User = sequelize.define('users', {
                   ^

TypeError: Cannot read property 'define' of undefined"

Here is my code:

server.js

const Sequelize = require('sequelize');       
// DB Config
const db = require('./config/keys');
// Connect to MySql
const sequelize = new Sequelize(db.database, db.user, db.password, {
    host: db.host,
    dialect: 'mysql',
    port: db.port
});

// Test the connection
sequelize
  .authenticate()
  .then(() => {
    console.log('Connection has been established successfully.');
  })
  .catch(err => {
    console.error('Unable to connect to the database:', err);
  });    
const serverDB = {};
serverDB.sequelize = sequelize;
serverDB.Sequelize = Sequelize;
module.exports = serverDB;

Users.js

const serverDB = require('../server');
const sequelize = serverDB.sequelize;
const Sequelize = serverDB.Sequelize;

const User = sequelize.define('users', {
        id: {
            type: Sequelize.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        name: {
            type: Sequelize.STRING,
            allowNull: false
        },
        email: {
            type: Sequelize.STRING,
            allowNull: false
        },
        password: {
            type: Sequelize.STRING,
            allowNull: false
        },
        avatar: {
            type: STRING
        },
        date: {
            type: Sequelize.DATE,
            defaudefaultValue: Sequelize.NOW
        }
    });

sequelize.models.modelName

// sequelize.sync()
//     .then(() => {
//         console.log('User db and user table have been created')
//     });

module.exports = User;

Upvotes: 0

Views: 4159

Answers (1)

Bsquare ℬℬ
Bsquare ℬℬ

Reputation: 4487

You should add

const Sequelize = require('sequelize');

in your client too.

And only export and use the lowercase sequelize.

And ensure relative path of server.js is good.

Upvotes: 1

Related Questions