A versão do meu Node é v12.16.3. Não tenho como atualizá-lo. Não sei se é esse o motivo do erro. Peço ajuda para fazer o programa rodar com módulos nesta versão. Agradeço.
A versão do meu Node é v12.16.3. Não tenho como atualizá-lo. Não sei se é esse o motivo do erro. Peço ajuda para fazer o programa rodar com módulos nesta versão. Agradeço.
Fala ai José, tudo bem? Apenas olhando o erro é um pouco complicado tentar lhe ajudar, o mesmo pode estar ocorrendo por N motivos (seja a versão do Node ou não).
Sendo assim, consegue compartilhar o projeto? Assim eu consigo simular o problema por aqui e analisá-lo com mais calma.
Pode compartilhar através do Github ou Google Drive (zipado).
Fico no aguardo.
Prezado Matheus, já fiz diversas tentativas e o erro persiste. Tenho certeza que o problema não é o meu código, mas sim, a minha versão do node v12.16.3 (a qual eu não posso alterar). Mas sei que na minha versão atual é possível resolver esse problema. Só que eu não possuo o conhecimento suficiente. Por isso, peço a sua ajuda.Na minha pesquisa, encontrei uma solução, mas não sei como implementá-la. Veja http://www.lib4dev.in/info/lpar/hello-express/261875788
Se precisar, o meu código: index.js:
import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";
const cliente1 = new Cliente();
const cliente2 = new Cliente();
const contaCorrenteRicardo = new ContaCorrente();
const contaCorrenteAlice = new ContaCorrente();
contaCorrenteRicardo.saldo = 20;
cliente1.qualquer = "QUALQUER"
//contaCorrenteAlice.saldo = 0;//
contaCorrenteRicardo.agencia = 1001;
contaCorrenteAlice.agencia = 1001;
console.log("O saldo inicial da Conta do Ricardo é = ", contaCorrenteRicardo.saldo);
contaCorrenteRicardo.depositar(100);
contaCorrenteAlice.depositar(100);
console.log("O saldo da Conta do Ricardo depois do depósito é = ", contaCorrenteRicardo.saldo);
const valorSacadoRicardo = contaCorrenteRicardo.sacar(25);
console.log("Valor sacado de Ricardo é: ", valorSacadoRicardo);
const valorSacadoAlice = contaCorrenteAlice.sacar(1);
console.log("Valor sacado de Alice é: ", valorSacadoAlice);
console.log("O saldo da Conta do Ricardo DEPOIS DO SAQUE é = ", contaCorrenteRicardo.saldo);
cliente1.nome = "Ricardo";
cliente1.cpf = 11122233309;
cliente2.nome = "Alice";
cliente2.cpf = 88822233309;
console.log("O Cliente1 é: ",cliente1);
console.log("O Cliente2 é: ",cliente2);
console.log("A Conta corrente de Ricardo é: ", contaCorrenteRicardo);
ContaCorrente.js:
export class ContaCorrente{
agencia;
#saldo = 0;
sacar(valor){
if(this.#saldo>=valor) {
this.#saldo-=valor;
console.log("O saldo real depois do saque é: ",this.#saldo);
return valor
}
};
depositar(valor){
if(valor>0){
this.#saldo += valor;
this.saldo += 1;
console.log("O saldo real depois do depósito é: ",this.#saldo, "o saldo sem # é", this.saldo);
}
};
}
Cliente.js:
export class Cliente {nome;cpf}
package.json:
{
"name": "bytebank",
"version": "1.0.0",
"description": "Projeto do bytebank para seus clientes",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"type": "module"
}
Fala José, compartilha o projeto completo comigo, sobe ele no Google Drive (zipado), assim eu consigo simular o problema local em minha máquina e analisá-lo com mais calma.
Fico no aguardo.
Prezado Matheus, bom dia! (por favor, leia tudo) Peço a sua ajuda. Minha versão do Node é v12.16.3 (a qual eu não posso alterar). Para essa versão, ações adicionais são necessárias para fazer funcionar para o Node trabalhar com módulos. Na minha pesquisa, encontrei uma solução, mas não sei como implementá-la. Veja http://www.lib4dev.in/info/lpar/hello-express/261875788 . MAS, RESOLVI FAZER DIFERENTE. Peguei o projeto COMPLETO do próprio curso de JavaScript introdução a Orientação a Objetos (código do professor), rodei e deu o MESMO ERRO! Então eu peço a você que rode o mesmo projeto do curso, que está no link a seguir, utilizando a versão do Node v12.16.3, e me responda o que devo fazer para que funcione. O projeto está neste link: https://github.com/alura-cursos/js-orientacao-objetos/archive/aula3.zip Aguardo. Obrigado.
Fala José, eu sempre leito todas as respostas kkkk mas, seu problema é um pouco mais complexo para ajudar apenas com texto.
O problema é porque o Node a sua versão do Node por padrão não entende algumas sintaxes dos códigos, no caso, o ES Modules (export
e import
).
Podemos resolver de N maneiras a mais simples seria atualizando a versão do seu Node para a 14.x
, você pode utilizar o nvm
para gerenciar as versões do Node em sua máquina.
Dá para usar várias versões para diferentes projetos.
Porem, caso não possa usar nem o nvm
, você vai precisar transpilar o código JavaScript para um padrão mais antigo que a sua versão consiga executar.
Essa transpilação pode ser feita de N maneiras, a mais simples seria através da Biblioteca sucrase.
Instale ela no seu projeto:
npm i -D sucrase
Esse comando deve ser executado dentro da pasta do seu projeto, onde existe o arquivo package.json
.
Uma vez que a instalação finalizou, tente executar o arquivo com:
npx sucrase-node index.js
Isso deve resolver o problema.
O próprio Sucrase será responsável por transpilar e executar seus códigos.
Espero ter ajudado.
Bom dia, Matheus. A solução que você ofereceu é muito complexa para o meu nível atual. Continuei pesquisando. E, GRAÇAS A DEUS, encontrei uma solução bem mais simples, no site: https://www.digitalocean.com/community/tutorials/new-ecmascript-modules-in-node-v12 . A versão que estou usando permite a utilização em módulos. Inseri a instrução "type": "module" no arquivo package.json, o node aceitou perfeitamente. Tanto é que pediu que eu inserisse o import no código do arquivo index.js. Eu já tinha inserido o import, mas faltava alguma coisa que não pude identificar. O node estava trabalhando com módulos. Entendi que não é necessário a transpilação. A solução é rodar o arquivo no powershell com o comando:
node --experimental-modules index.js
Mas, eu perdi 3 dias nisso. De qualquer for, agradeço.
Perfeito José, obrigado por compartilhar a solução. Comando "node --experimental-modules index.js" funcionou perfeitamente na versão 12 do node.
Boa José, fico feliz que tenha resolvido o problema.
Sempre que precisar não deixe de criar suas dúvidas.
E obrigado por compartilhar o --experimental-modules
, vai ajudar muitos outros alunos, parabéns.
Abraços e bons estudos.