I'm runningnpx Sequelize-cli db:migrate
which creates 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 want to perform migration but can't succeed, even if I change the config file to json, the error still exists...
In the models/index.js file, you need to update config.json to config.js
In config/config.js,
Have you tried using
cont dotenv = require('dotenv');
instead ofimport dotenv from "dotenv";
?Replace
export default
withmodule.exports =
?