Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

TypeError: Cliente is not a constructor

Ao realizar a execução do programa para testar o resultado o seguinte erro abaixo é retornado:

TypeError: Cliente is not a constructor at Object. (/Users/leonardocardoso/Documents/Alura/FormacaoFrontEnd/projetoByteBank/index.js:10:18) at Module.compile (internal/modules/cjs/loader.js:1137:30) at Object.Module.extensions..js (internal/modules/cjs/loader.js:1157:10) at Module.load (internal/modules/cjs/loader.js:985:32) at Function.Module.load (internal/modules/cjs/loader.js:878:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/runmain.js:71:12) at internal/main/run_main_module.js:17:47

5 respostas

Oi, Leonardo, tudo bem?

Compartilha conosco a sua classe para que possa entender o que pode ter acontecido para você receber esse erro.

Segue abaixo minha classe de cliente. Não estou usando o Node na versão 13 de propósito, pois queria testar. Não sei se pode ser a versão do Node.

class Cliente{

    get cpf(){
        return this._cpf;
    }

    constructor (nome, cpf){
        this.nome = nome;
        this._cpf = cpf;
    }
}
module.exports = {Cliente}; 
solução!

Oi, Leonardo!

Pelo que entendi você está utilizando a forma de importação dos arquivos com o CommonJS:

module.exports = Cliente;

const Cliente = require("./Cliente.js");

A outra forma é com o ES6:

export default Cliente;

import Cliente from "./Cliente.js";

Além da diferença sintática, há uma diferença de performance entre ambas. A forma com o require é sincrona já o import pode ser assíncrona (sem esperar pela importação anterior) . Como também o require fará a varredura automática do node_modules para encontrar os módulos, mas o import, que vem do ES6, não.

Caso você queria utilizar a forma do require da CommonJs, no seu package.json você precisa eleminar a chave-valor "type": "module".

Se ficou alguma dúvida é só falar!

Laís, agradeço muito atenção e a reposta. A explicação que você deu foi ótima, mas quando criei esse post, o meu arquivo package.json já estava sem o "type":"module". Acredito que esse erro possa ser por conta da versão do Node. No Curso o próprio professor orienta a usarmos o Node na versão 13 em diante. Irei salvar aqui o projeto, atualizar e testar com o ES6 conforme você citou acima. Mais uma vez muito obrigado pela resposta.

Oi, Leonardo! Que bom que te esclareceu! Sim, acredito que a versão do Node precisa ser a 12 ou menores. Mas, particularmente, o método do ES6 é mais interessante não por pela parte léxica como de performance.

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software