2
respostas

Erro na variável __dirname do arquivo "index.js" da pasta "models"

Insira aqui a descrição dessa imagem para ajudar na acessibilidade
Por que ocorreu esse erro e como concertar?

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Olá, Luidi! Como vai?

O erro que você está enfrentando ocorre porque a variável __dirname não está definida no contexto em que está sendo usada. Isso pode acontecer se você estiver utilizando módulos ES6, que não suportam __dirname de forma nativa.

Para corrigir isso, você pode definir __dirname manualmente usando o módulo path do Node.js. Aqui está um exemplo de como fazer isso:

import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// Agora você pode usar __dirname como de costume
fs.readdirSync(__dirname)
  .filter(file => {
    return (
      file.indexOf('.') !== 0 &&
      file !== basename &&
      file.slice(-3) === '.js' &&
      file.indexOf('.test.js') === -1
    );
  })
  .forEach(file => {
    const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
    db[model.name] = model;
  });

Com isso, você deve conseguir resolver o problema.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Descobri o problema, no caso era que o ESLint tinha: "browser": true e era para estar "node": true. Não sei como o ESLint não acusou esse erro para a professora do curso já que ela está usando o ESLint também!