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

Erro na importação

Tô usando o VS Code para acompanhar as aulas e na parte de separar as classes e importar deu o erro SyntaxError: Cannot use import statement outside a module, então criei o package.json e adicionei o "type": "module" e dessa vez deu o erro Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Já tentei abrir e fechar o editor de código e apagar e recriar o package.json e continuou não funcionando.

O index.js:

import { Cliente } from "d:/Programas/JavaScript/ByteBank/Cliente.js";
import { ContaCorrente } from "d:/Programas/JavaScript/ByteBank/ContaCorrente.js";

const cliente1 = new Cliente();
cliente1.nome = "Ricardo";
cliente1.cpf = "111.222.333-44";

const cliente2 = new Cliente();
cliente2.nome = "Alice";
cliente2.cpf = "888.222.333-44";

const ContaCorrenteRicardo = new ContaCorrente();
ContaCorrenteRicardo.agencia = 1001;


console.log(ContaCorrenteRicardo);

O Cliente.js:

export class Cliente {
    nome;
    cpf;
}

O ContaCorrente.js:

export class ContaCorrente {
    agencia;
    _saldo = 0;
    //por convenção da comunidade, que o atributo que possui _ na frente só pode ser mexido no escopo da classe.
    /* #saldo = 0;
        propriedade privada, não pode ser mudada fora da classe.
        o campo privado não aparece quando chamado no console. */
    Sacar(valor) {
        if (this.#saldo >= valor) {
            this.#saldo -= valor;
        }
    }

    Depositar(valor) {
        if (valor > 0) {
            this.#saldo += valor;
        }
    }
}

O package.json:

{
  "name": "bytebank",
  "version": "1.0.0",
  "description": "Projeto da Alura para o ByteBank",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "Luisa",
  "license": "ISC",
  "type": "module"
}
1 resposta
solução!

Olá Maria Luisa, tudo bem?

Para resolver o problema da sua importação, vamos precisar fazer umas pequenas alterações no seu código, mas no geral está tudo certo.

No arquivo index.js, na hora de fazer a importação do Cliente e da ContaCorrente escreva dessa forma:

import { Cliente } from "./Cliente.js";
import { ContaCorrente } from "./ContaCorrente.js";

Apenas essa mudança provavelmente já resolverá o problema da importação. Porém, se for executar o programa com node index.js verá que aparecerá alguns erros. Para resolve-los, basta ir no arquivo ContaCorrente.js e alterar o que estiver com this.#saldo por this._saldo. O código completo ficará assim:

export class ContaCorrente {
    agencia;
    _saldo = 0;
    //por convenção da comunidade, que o atributo que possui _ na frente só pode ser mexido no escopo da classe.
    /* _saldo = 0;
        propriedade privada, não pode ser mudada fora da classe.
        o campo privado não aparece quando chamado no console. */
    Sacar(valor) {
        if (this._saldo >= valor) {
            this._saldo -= valor;
        }
    }

    Depositar(valor) {
        if (valor > 0) {
            this._saldo += valor;
        }
    }
}
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!