Nao entendo esse erro no VSCode

Quando eu rodo classe em Javascript no VSCode com o constructor vazio aparece esse erro…
porem quando monto o constructor roda normal… o que pode ser

[Running] node "/home/samuelrazz/aulaJs/JavaScriptOO/index12.js"
/home/samuelrazz/aulaJs/JavaScriptOO/index12.js:2
    nome;
        ^

SyntaxError: Unexpected token ;
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

configurei o package.json dessa forma

{
  "name": "aulajs",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "module": "node"
}

O erro está na linha 2 do arquivo index12.js. Manda ele ai pra gente ver.

class Carro{
   nome
   modelo
   ano
}
class Carro {
    constructor(nome, modelo, altura) {
        this.nome = nome;
        this.modelo = modelo;
        this.altura = altura;
    }

    infoVeiculo() {
        return {nome: this.nome, modelo: this.modelo, altura: this.altura};
    }
}

const carro = new Carro("Captur", "Chevrolet", "1.50m");
console.log(carro.infoVeiculo());

Dessa forma funciona… com o constructor vazio não funciona. Será q é uma config do Vscode?

Não, é pq vc tá utilizando classe. O que vc quer fazer exatamente?

É que estava assistindo uma aula e o instrutor fez uma classe com o construtor vazio e funcionou. Mas quando eu tentei não rodou. Queria saber pq… quando eu monto com o construtor funciona…

Vc diz assim?

class Carro {
    constructor() {
    }

    umaFunction() {
        //TODO
    }
}

Na classe, utilizando Javascript, não da pra declarar as variaveis sem ser no constructor. Vc pode declarar fora da class e recuperar depois, exemplo:

const nomeCarro = "Captur";

class Carro {
    constructor() {
    }

    umaFunction() {
        console.log(nomeCarro);
    }
}
1 curtida

Estranho. Qdo faço isso:

Carro.js

class Carro {
	nome = 'Tesla';
	
	getNome() {
		return this.nome;
	}
}

var car = new Carro();
console.log(`O carro é um ${car.getNome()}`);

e executo:

node Carro.js

Imprime:

O carro é um Tesla
1 curtida

Declarar campos desta forma ainda é uma feature experimental, conforme dito na documentação.

Pode ser que se torne padrão no futuro, mas eu ainda usaria com cautela por enquanto, já que atualmente não é garantido que funcione em todos os ambientes.

Provavelmente você usou uma versão do Node mais nova que a do @Samuelr1.

2 curtidas

Dessa forma mesmo…

class Carro{
   nome
   modelo
   ano
}
Const carro = new Carro()
carro.nome = "Fusca"

Mas o erro da na linha 2… ?? Vai saber…

Veja a resposta do @hugokotsubo. Essa é uma feature experimental, e pode não funcionar dependendo da sua versão do nodejs. A versão do node que tenho e que funcionou é a v12.22.1.

Blz Man. Vlw…

Por curiosidade, qual a versão do nodejs que tu executou o código que deu erro?

10.9