简体   繁体   中英

Sequelize CLI migration error Cannot read properties of undefined (reading 'detail')

I'm running npx sequelize-cli db:migrate to create the table in the database and returns the following message:

Sequelize CLI [Node: 18.9.1, CLI: 6.5.1, ORM: 6.20.1]


ERROR: Cannot find "/src/db/migrations/config/config.json". Have you run "sequelize init"?

ERROR: Cannot read properties of undefined (reading 'detail')
sequelize-cli db:migrate

Run pending migrations

But I have already run the command sequelize-init...

this is my config.js file

import dotenv from "dotenv";
dotenv.config();

export default {
  development: {
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    dialect: process.env.DB_DIALECT,
    logging: true,
  },
  test: {
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    host: process.env.DB_HOST,
    dialect: process.env.DB_DIALECT,
  },
  production: {
    username: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_NAME,
    host: process.env.DB_HOST,
    dialect: process.env.DB_DIALECT,
  },
};

My migration file:

"use strict";

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up(queryInterface, Sequelize) {
    await queryInterface.createTable("Users", {
      id: {
        type: Sequelize.INTEGER,
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
      },
      name: {
        type: Sequelize.STRING(50),
        allowNull: false,
      },
      birth_date: {
        type: Sequelize.DATEONLY,
        allowNull: false,
      },
      email: {
        type: Sequelize.STRING(62),
        allowNull: false,
      },
      phone: {
        type: Sequelize.STRING(20),
        allowNull: false,
      },
      address: {
        type: Sequelize.STRING(100),
        allowNull: false,
      },
      password: {
        type: Sequelize.STRING(100),
        allowNull: false,
      },
      position_id: {
        type: Sequelize.INTEGER,
        allowNull: false,
        references: {
          model: "Position",
          key: "id",
        },
      },
      is_active: {
        type: Sequelize.BOOLEAN,
        allowNull: false,
      },
      is_admin: {
        type: Sequelize.BOOLEAN,
        allowNull: false,
      },
      created_at: {
        type: Sequelize.DATE,
        allowNull: false,
      },
      updated_at: {
        type: Sequelize.DATE,
        allowNull: false,
      },
    });
  },

  async down(queryInterface, Sequelize) {
    await queryInterface.dropTable("Users");
  },
};

my.sequelizerc file:

import path from "path";

export default {
  config: path.resolve("config", "config.js"),
};

and my package.json file:

{
  "name": "startbootstrap-sb-admin-2-gh-pages",
  "version": "1.0.0",
  "description": "",
  "main": "gulpfile.js",
  "scripts": {
    "test": "test",
    "dev": "nodemon src/server.js"
  },
  "type": "module",
  "author": "",
  "license": "ISC",
  "dependencies": {
    "connect-flash": "^0.1.1",
    "cookie-parser": "^1.4.6",
    "dotenv": "^16.0.3",
    "ejs": "^3.1.8",
    "express": "^4.18.1",
    "express-ejs-layouts": "^2.5.1",
    "express-session": "^1.17.3",
    "http": "^0.0.1-security",
    "http-error": "^0.0.6",
    "morgan": "^1.10.0",
    "mysql2": "^2.3.3",
    "nodemon": "^2.0.16",
    "path": "^0.12.7",
    "sequelize": "^6.20.1"
  },
  "devDependencies": {
    "sequelize-cli": "^6.5.1"
  }
}

I would like to perform the migration but I couldn't succeed, even if I changed the config file to json, and the error still persisted...

In the config/config.js,

  • did you try to use cont dotenv = require('dotenv'); instead of import dotenv from "dotenv"; ?

  • replacing export default by module.exports = ?

In your models/index.js file, you need to update config.json to config.js

run the following command would do the trick

npx sequelize-cli db:migrate --debug

for me, i missed a , in my migration file

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM