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

E se eu quisesse colocar no HTML, como eu faria?

Ao mesmo tempo em que estou usando o PowerShell, também estava executando testes no navegador. Para isso, eu havia criado o seguinte index.html

<meta charset="UTF-8">

<script src="index.js"></script>

Depois de criar o arquivo json e fazer as devidas importações e exportações, não consigo mais acessar o console pelo navageador. Apenas no PowerShell. index.js:

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

const cliente1 = new Cliente();
const cliente2 = new Cliente();

cliente1.nome = "Ricardo";
cliente1.cpf = 11122233309;

cliente2.nome = "Alice";
cliente2.cpf = 88822233309;

console.log(cliente1, cliente2);

const contaCorrenteRicardo = new ContaCorrente();
const contaCorrenteAlice = new ContaCorrente();

contaCorrenteRicardo.agencia = 1001;

contaCorrenteAlice.agencia = 1001;

contaCorrenteRicardo.depositar(50);

const dinheiroSacado = contaCorrenteRicardo.sacar(50);
console.log("Você sacou: " + dinheiroSacado);

Cliente.js:

export class Cliente {
    nome;
    cpf;
}

ContaCorrente.js:

export class ContaCorrente {
    agencia;
    #saldo = 0;

    sacar(valorSacado) {
        if (this.#saldo >= valorSacado) {
            this.#saldo -= valorSacado;
            return valorSacado;
        }
    }

    depositar(valorDepositado) {
        if (valorDepositado <= 0) {
            return
        }
        this.#saldo += valorDepositado;
    }
}

package.json:

{
  "name": "exerciciobanco",
  "version": "1.0.0",
  "description": "Projeto da aula da JavaScript na Alura.",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Cristiano",
  "license": "ISC",
  "type": "module"
}

Como falei, no PowerShell está normal. Já no console, aparece este erro: index.js:1 Uncaught SyntaxError: Cannot use import statement outside a module (at index.js:1:1) Como eu corrijo esse erro, para poder acessar também no HTML?

4 respostas

Bom Dia Cristiano, tudo jóia?

Tente adicionar a propriedade type="module" na sua tag script no HTML.

<script type="module" src="index.js"></script>

Deve resolver seu problema.

Espero ter ajudado.

Bons Estudos !

Olá, Thiago! Obrigado pela resposta!

Infelizmente, não deu certo. Ao fazer a alteração sugerida, apareceu esse novo erro: Imagem mostrando os erros ao adicionar type="module" no script do html

solução!

Então Cristiano,

Pelo erro acredito que você tenha aberto o arquivo HTML diretamente pelo navegador. Caso esse seja seu caso, ao ler a documentação da MDN sobre JS Modules percebi que para usar os módulos do js é necessário que você terá que testar ele através de um servidor (mesmo que ele seja local).

Se você estiver usando o VS Code tem uma possibilidade usando a extensão do Live Server que pode funcionar. Não tenho total certeza que vá funcionar, mas em teoria o Live Server abre um servidor para atualizar automaticamente o arquivo assim que ele é salvo.

Vale a pena o teste.

Um abraço !

Obrigado pela ajuda, Thiago!

Realmente, eu estou usando o navegador. O Google Chrome.

Testei abrir o index.html com o Live Server, e funcionou! Apareceu um erro no final, mas ao mesmo tempo funcionou. Todas as mensagens que eu havia colocado nos console.log apareceram!

console mostrando todas as mensagens corretamente, mais um erro