Initialiseur de propriété abrégé non valide


165

J'ai écrit le code suivant en JavaScript pour un projet de nœud, mais j'ai rencontré une erreur lors du test d'un module. Je ne sais pas ce que signifie l'erreur. 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'essaye d'exécuter ce module, cela génère l'erreur suivante:

$ 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 tout à fait ce que cela signifie et ce que je peux faire pour résoudre ce problème.

Réponses:


445

Parce que c'est un objet, la façon d'attribuer une valeur à ses propriétés utilise :.

Remplacez le =par :pour corriger l'erreur.

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

Cela a fonctionné, mais je pensais que vous
utilisiez

1
Consultez la documentation relative à l' initialisation d'objets pour savoir comment initialiser les littéraux d'objet en javascript. Spécialement la session intitulée Création d'objets .
Diego Faria

7
Je pensais que vous utilisiez =pour stocker des nombres et :pour les chaînes de caractères, je me demande d'où vous auriez eu cette idée.

2
Arghh! Il est temps de prendre un café. Merci. :)
ArendE le

5

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

Le code correct devrait être comme: -

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

3

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 de l'objet lorsque vous utilisez le littéral objet pour créer un objet, c'est-à-dire "{}", 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 ":". par 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

1

Utilisation : place de=

voir l'exemple ci-dessous qui donne une erreur

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

Cela donne une erreur Syntex: initialiseur de propriété raccourci invalide.

Ensuite, je remplace = par :qui résout cette erreur.

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

-1

Il y a une erreur de syntaxe dans l' optionsinitialisation de votre variable. Vous devriez utiliser à la port: 8080place de port = 8080.


Cette réponse devrait être un commentaire plutôt qu'une réponse :)
Pipetus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.