我正在运行 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,错误仍然存在...
在 models/index.js 文件中,您需要将 config.json 更新为 config.js
在 config/config.js 中,
您是否尝试使用
cont dotenv = require('dotenv');
而不是import dotenv from "dotenv";
?用
module.exports =
替换export default
?