Inicializador de propiedad de taquigrafía no válido

165

Escribí el siguiente código en JavaScript para un proyecto de nodo, pero me encontré con un error al probar un módulo. No estoy seguro de lo que significa el error. Aquí está mi código:

var http = require('http');
// makes an http request
var makeRequest = function(message) {
 var options = {
  host: 'localhost',
  port = 8080,
  path : '/',
  method: 'POST'
 }
 // make request and execute function on recieveing response
 var request = http.request(options, function(response) {
  response.on('data', function(data) {
    console.log(data);
  });
 });
 request.write(message);
 request.end();
}
module.exports = makeRequest;

Cuando intento ejecutar este módulo, arroja el siguiente error:

$ node make_request.js
/home/pallab/Desktop/make_request.js:8
    path = '/',
    ^^^^^^^^^^
SyntaxError: Invalid shorthand property initializer
    at Object.exports.runInThisContext (vm.js:76:16)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:509:3

No entiendo qué significa esto y qué puedo hacer para resolverlo.

Pallab Ganguly
fuente

Respuestas:

443

Debido a que es un objeto, se utiliza la forma de asignar valor a sus propiedades :.

Cambie =a :para corregir el error.

var options = {
  host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
Diego Faria
fuente
Eso funcionó, pero pensé que
usabas
1
Consulte Documentos del inicializador de objetos para aprender a inicializar literales de objetos en javascript. Especialmente la sesión llamada Crear objetos .
Diego Faria
77
Pensé que solías =almacenar números y :para cadenas me pregunto de dónde habrías tenido esa idea.
2
Arghh! Es hora de tomar un café. Gracias. :)
ArendE
5

Este error generalmente aparece cuando intenta asignar un objeto con el signo Igual a (=) en lugar de dos puntos (:)

El código correcto debería ser como: -

var options = {
  host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
Nitin Nema
fuente
3

En el objeto de opciones, ha utilizado el signo "=" para asignar valor al puerto, pero tenemos que usar ":" para asignar valores a las propiedades del objeto cuando se utiliza el objeto literal para crear un objeto, es decir, "{}", estos corchetes. Incluso cuando usa la expresión de función o crea un objeto dentro del objeto, debe usar el signo ":". por ejemplo:

    var rishabh = {
        class:"final year",
        roll:123,
        percent: function(marks1, marks2, marks3){
                      total = marks1 + marks2 + marks3;
                      this.percentage = total/3 }
                    };

john.percent(85,89,95);
console.log(rishabh.percentage);

aquí tenemos que usar comas "," después de cada propiedad. pero puede usar otro estilo para crear e inicializar un objeto.

var john = new Object():
john.father = "raja";  //1st way to assign using dot operator
john["mother"] = "rani";// 2nd way to assign using brackets and key must be string
r.jain
fuente
1

Usar en :lugar de=

mira el siguiente ejemplo que da un error

app.post('/mews', (req, res) => {
if (isValidMew(req.body)) {
    // insert into db
    const mew = {
        name = filter.clean(req.body.name.toString()),
        content = filter.clean(req.body.content.toString()),
        created: new Date()
    };

Eso da error Syntex: inicializador de propiedad abreviado no válido.

Luego lo reemplazo = con :eso resuelve este error.

app.post('/mews', (req, res) => {
if (isValidMew(req.body)) {
    // insert into db
    const mew = {
        name: filter.clean(req.body.name.toString()),
        content: filter.clean(req.body.content.toString()),
        created: new Date()
    };
akshay_sushir
fuente
-2

Hay un error de sintaxis en la optionsinicialización de su variable. Deberías usar en port: 8080lugar de port = 8080.

Mahesa daniswara
fuente
Esta respuesta debería ser un comentario, en lugar de una respuesta :)
Pipetus hace