Erro - TypeError: sequelize.import is not a function
Este erro ocorre se tu utilizar a função sequelize.import
em uma versão mais recente do Sequelize, que não suporta mais essa função. Para resolver o erro, é necessário substituir o uso de sequelize.import pelo uso de require para importar os modelos.
Solução
- Para corrigir o erro, siga os seguintes passos:
- Abra o arquivo que está causando o erro.
- Substitua a linha:
const model = sequelize["import"](path.join(__dirname, file));
por: const model = require(path.join(__dirname, file))(sequelize, Sequelize);.
- Certifique-se de que todas as dependências necessárias, como o pacote sequelize, estejam instaladas corretamente.
Exemplo de código corrigido
javascript
const fs = require("fs");
const path = require("path");
const Sequelize = require("sequelize");
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || "development";
const config = require(__dirname + "/../config/config.json")[env];
const db = {};
let sequelize;
if (config.use_env_variable) {
sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
sequelize = new Sequelize(
config.database,
config.username,
config.password,
config
);
}
fs.readdirSync(__dirname)
.filter((file) => {
return (
file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
);
})
.forEach((file) => {
const model = require(path.join(__dirname, file))(sequelize, Sequelize);
db[model.name] = model;
});
Object.keys(db).forEach((modelName) => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;