#Problema con Sequelize y ES Modules
1 messages · Page 1 of 1 (latest)
/**
* import { Permission } from '../../models/index.js'; ---->>> De ésta manera falla
* Error en terminal:
* import { Permission } from '../../models/index.js';
^^^^^^^^^^
* SyntaxError: The requested module '../../models/index.js' does not provide an export named 'Permission'
*/
import Models from '../../models/index.js';
async function getPermissions() {
return await Models.Permission.findAndCountAll({
order: [['name', 'ASC']]
});
}
export default {
getPermissions
};
El archivo ../models/index.js es el siguiente
import fs from 'fs';
import path from 'path';
import Sequelize from 'sequelize';
import Config from '../config/index.js';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
const { database, username, password } = Config.db;
const sequelize = new Sequelize(database, username, password, Config.db);
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const basename = path.basename(__filename);
const db = {};
fs.readdirSync(__dirname)
.filter((file) => {
return (
file.indexOf('.') !== 0 &&
file !== basename &&
file.slice(-3) === '.js' &&
file.indexOf('.test.js') === -1
);
})
.forEach((file) => {
import(path.join(__dirname, file))
.then((module) => {
const model = module.default(sequelize, Sequelize.DataTypes);
db[model.name] = model;
})
.catch((error) => {
console.error(`Error al importar el módulo ${file}: ${error}`);
});
});
Object.keys(db).forEach((modelName) => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
export default db;
// Archivo ./models/Permission.js
import { Model } from 'sequelize';
export default (sequelize, DataTypes) => {
class Permission extends Model {
static associate(models) {}
}
Permission.init(
{
code: {
allowNull: false,
primaryKey: true,
type: DataTypes.STRING,
validate: {
notContains: ' '
}
},
name: {
allowNull: false,
type: DataTypes.STRING
}
},
{
sequelize,
tableName: 'permission',
underscored: true
}
);
return Permission;
};
Lo que me dsconcierta es que si importo Models puedo acceder a Models.Permission, pero si lo hago utilizando {Permission} larga el error mensionado