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

não usar o module.exports

Boa Noite Alura, no decorrer da aula percebi que o professor nao colocou module.exports no arquivo estrategia-autenticacao, seque codigo:

const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const Usuario = require('./usuarios-modelo');
const {InvalidArgumentError} = require('../erros');
const bcrypt = require('bcrypt');
function verificaUsuario(usuario){
    if(!usuario){
        throw new InvalidArgumentError('Nao existe usuario com esse e-mail')
    }
}
async function verificaSenha(senha, senhaHash){
    const senhaValida = await bcrypt.compare(senha, senhaHash)
    if(!senhaValida){
        throw new InvalidArgumentError('E-mail ou Senha invalidos')
    }
}
passport.use(
    new LocalStrategy({
        usernameField: 'email',
        passwordField: 'senha',
        session: false
    }, async (email, senha, done) =>{
        try{
            const usuario = await Usuario.buscaPorEmail(email);
            verificaUsuario(usuario);
            await verificaSenha(senha, usuario.senhaHash);
            done(null, usuario);
        }catch(erro){
            done(erro)
        }
    })
);

e o mesmo arquivo e utilizado no index.js da pasta usuarios, segue codigo

module.exports = {
  rotas: require('./usuarios-rotas'),
  controlador: require('./usuarios-controlador'),
  modelo: require('./usuarios-modelo'),
  estrategiasAutenticacao: require('./estrategia-autenticacao')
}

como o index.js sabe onde esta o estrategiasAutenticacao: require('./estrategia-autenticacao') se o memso nao tem module.exports?

obrigado

1 resposta
solução!

Oi Marcelo, tudo bem? No NodeJS, você pode sim ter arquivos que não usa o module.exports e você pode sim fazer require desses arquivos e o Node vai conseguir carregá-los sem problema algum. Porém, algumas coisas mudam: como não existe um módule.exports você não vai conseguir obter de forma simples as funções que estão dentro deste arquivo. Então o que vai acontecer? O Node vai ler este arquivo, carregar e executar o código que estiver dentro dele sem expor nada.

E o que é que este arquivo está fazendo em específico? Pelo que entendi, ele esta apenas registrando uma estratégia de autenticação no passport para ser usada depois.

Confesso pra você que também acho estranho fazer assim, não me parece convencional. Tá funcionando certinho pra você?

Caso tenha mais alguma dúvida, por favor, posta aqui, vou ficar feliz em ajudar.

Bons estudos :)