web-dev-qa-db-fra.com

Initialiseur de propriété abrégé invalide

J'ai écrit le code suivant en JavaScript pour un projet de noeud, mais j'ai rencontré une erreur lors du test d'un module. Je ne suis pas sûr de ce que l'erreur signifie. Voici mon code:

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;

Lorsque j'essaie d'exécuter ce module, l'erreur suivante est générée:

$ 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

Je ne comprends pas très bien ce que cela signifie et ce que je peux faire pour résoudre ce problème.

104
Pallab Ganguly

Parce que c'est un objet, le moyen d'assigner une valeur à ses propriétés est d'utiliser :.

Modifiez le = en : pour corriger l'erreur.

var options = {
  Host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
286
Diego Faria

Dans les options object, vous avez utilisé le signe "=" pour attribuer une valeur au port, mais nous devons utiliser ":" pour attribuer des valeurs aux propriétés d'un objet lorsque vous utilisez littéral d'objet pour créer un objet, à savoir "{}", ces accolades. Même lorsque vous utilisez une expression de fonction ou créez un objet à l'intérieur d'un objet, vous devez utiliser le signe ":". pour exemple:

    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);

ici, nous devons utiliser des virgules "," après chaque propriété. mais vous pouvez utiliser un autre style pour créer et initialiser un objet.

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
2
r.jain

Cette erreur survient généralement lorsque vous essayez d'affecter un objet avec un signe égal à (=) plutôt que deux points (:)

Le code correct devrait être comme: -

var options = {
  Host: 'localhost',
  port: 8080,
  path: '/',
  method: 'POST'
 }
2
Nitin Nema