Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Sequelize import is not a function

No arquivo disponibilizado que percorre a pasta models, está dando erro na seguinte função.

fs.readdirSync(__dirname)
  .filter(file => {
    return (
      file.indexOf(".") !== 0 && file !== basename && file.slice(-3) === ".js"
    );
  })
  .forEach(file => {
    const model = sequelize["import"](path.join(__dirname, file));
    db[model.name] = model;
  });

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

Diz que sequelize.import não é uma função.

1 resposta
solução!

Olá Guilherme, tudo bem com você?

Você poderia me dizer qual versão do sequelize e sequelize-cli, você está utilizando?

Quando você diz que o arquivo disponibilizado, você quer dizer que fez download do projeto para pegar o arquivo models.js?

Caso seja, acredito que pode ter dado uma incompatibilidade de versão, pois a partir da versão 6 do sequelize a maneira de fazer esse scan mudou um pouco :)

O ideal seria realmente utilizar o npx sequelize-cli init para ele gerar esses arquivos base igual a instrutora

Eu fiz aqui um teste, e a partir da versão 6, o models/index.js está da seguinte forma:

'use strict';

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.DataTypes);
    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;

De fato não temos o sequelize.import com a versão 6.X.X

Abraços e Bons Estudos!