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

my.sequalizerc文件:

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,错误仍然存在。。。

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

在config/config.js中,

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

  • module.exports =代替export default

运行以下命令可以完成

npx sequelize-cli db:migrate --debug

对我来说,我在迁移文件中错过了一个,

确保在正确的文件夹中运行npx sequelize-cli db:migrate;。sequelizerc";位于

它对我有效,我试图在以前的文件夹中运行命令,这就是为什么它会给出错误

最新更新