搜索

首页  >  问答  >  正文

Sequelize CLI 迁移错误:无法访问未定义的属性(特别是“详细信息”)

我正在运行 npx Sequelize-cli db:migrate 在数据库中创建表并返回以下消息:

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

但是我已经运行了命令sequelize-init...

这是我的 config.js 文件

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,
  },
};

我的迁移文件:

"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");
  },
};

我的 .sequelizerc 文件:

import path from "path";

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

和我的 package.json 文件:

{
  "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"
  }
}

我想执行迁移,但无法成功,即使我将配置文件更改为 json,错误仍然存在...

P粉463418483P粉463418483392 天前731

全部回复(2)我来回复

  • P粉551084295

    P粉5510842952023-11-05 12:55:36

    在 models/index.js 文件中,您需要将 config.json 更新为 config.js

    回复
    0
  • P粉098417223

    P粉0984172232023-11-05 09:35:15

    在 config/config.js 中,

    • 您是否尝试使用 cont dotenv = require('dotenv'); 而不是 import dotenv from "dotenv";

    • module.exports = 替换 export default

    回复
    0
  • 取消回复