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.
Por curiosidade, qual a versão do nodejs que tu executou o código que deu erro?