Ungültiger Eigenschaftsinitialisierer für Kurzschrift


164

Ich habe den folgenden Code in JavaScript für ein Knotenprojekt geschrieben, bin jedoch beim Testen eines Moduls auf einen Fehler gestoßen. Ich bin mir nicht sicher, was der Fehler bedeutet. Hier ist mein 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;

Wenn ich versuche, dieses Modul auszuführen, wird der folgende Fehler ausgegeben:

$ 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

Ich verstehe nicht ganz, was das bedeutet und was ich tun kann, um das zu lösen.

Antworten:


439

Da es sich um ein Objekt handelt, wird die Methode zum Zuweisen von Werten zu seinen Eigenschaften verwendet :.

Ändern Sie das =in :, um den Fehler zu beheben.

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

Das hat funktioniert, aber ich dachte, Sie verwenden =, um Zahlen zu speichern und: für Zeichenfolgen
Pallab Ganguly

1
In den Dokumenten zur Objektinitialisierung erfahren Sie, wie Sie Objektliterale in Javascript initialisieren. Insbesondere die Sitzung mit dem Namen Objekte erstellen .
Diego Faria

6
Ich dachte, Sie =speichern Zahlen und :für Zeichenfolgen frage ich mich, woher Sie diese Idee hätten.

2
Arghh! Zeit für einen Kaffee. Vielen Dank. :)
ArendE

5

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, ein Objekt mit dem Gleichheitszeichen (=) anstelle des Doppelpunkts (:) zuzuweisen

Der richtige Code sollte wie folgt lauten: -

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

3

Im Optionsobjekt haben Sie das Zeichen "=" verwendet, um dem Port einen Wert zuzuweisen, aber wir müssen ":" verwenden, um den Eigenschaften im Objekt Werte zuzuweisen, wenn Sie mit dem Objektliteral ein Objekt erstellen, dh "{}", diese geschweiften Klammern. Selbst wenn Sie einen Funktionsausdruck verwenden oder ein Objekt innerhalb eines Objekts erstellen, müssen Sie das Zeichen ":" verwenden. für zB:

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

hier müssen wir nach jeder Eigenschaft Kommas "," verwenden. Sie können jedoch einen anderen Stil verwenden, um ein Objekt zu erstellen und zu initialisieren.

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

Verwenden Sie :anstelle von=

Siehe das folgende Beispiel, das einen Fehler anzeigt

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

Das gibt Syntex Error: ungültiger Shorthand Proprty Initialisierer.

Dann ersetze ich = mit , :dass die diesen Fehler zu beheben.

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()
    };
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.