Je lance npx Sequelize-cli db:migrate
pour créer une table dans la base de données et cela renvoie le message suivant :
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
Mais j'ai déjà exécuté la commande sequelize-init...
Voici mon fichier 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, }, };
Mon dossier de migration :
"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"); }, };
Mon fichier .sequelizerc :
import path from "path"; export default { config: path.resolve("config", "config.js"), };
et mon fichier 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" } }
Je souhaite effectuer une migration mais je n'y parviens pas, même si je change le fichier de configuration en json, l'erreur existe toujours...
Dans le fichier models/index.js, vous devez mettre à jour config.json vers config.js
Dans config/config.js,
Avez-vous essayé d'utiliser
cont dotenv = require('dotenv');
而不是import dotenv from "dotenv";
?Utiliser
module.exports =
替换export default
?