अमान्य आशुलिपि संपत्ति इनिशियलाइज़र


165

मैंने नोड प्रोजेक्ट के लिए जावास्क्रिप्ट में निम्नलिखित कोड लिखा था, लेकिन मैं मॉड्यूल का परीक्षण करते समय त्रुटि में चला गया। मुझे यकीन नहीं है कि त्रुटि का क्या मतलब है। यहाँ मेरा कोड है:

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;

जब मैं इस मॉड्यूल को चलाने का प्रयास करता हूं, तो यह निम्नलिखित त्रुटि को फेंकता है:

$ 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

मुझे इसका मतलब नहीं मिला, और मैं इसे हल करने के लिए क्या कर सकता हूं।

जवाबों:


443

क्योंकि इसकी एक वस्तु, इसके गुणों के लिए मूल्य प्रदान करने का तरीका उपयोग कर रहा है :

त्रुटि को ठीक =करने के :लिए परिवर्तित करें ।

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

काम किया है, लेकिन मुझे लगा कि आप संख्याओं को स्टोर करने के लिए = का उपयोग करते हैं: और स्ट्रिंग्स के लिए
पल्लब गांगुली

1
जावास्क्रिप्ट में ऑब्जेक्ट शाब्दिकों को कैसे शुरू करना है, यह जानने के लिए ऑब्जेक्ट इनिशलाइज़र डॉक्स देखें । विशेष रूप से सत्र जिसे ऑब्जेक्ट्स बनाना कहा जाता है
डिएगो फारिया

7
मुझे लगा कि आप =संख्याओं को संग्रहीत करने के लिए उपयोग करते हैं और :तार के लिए मुझे आश्चर्य है कि आप उस विचार को कहां प्राप्त करेंगे।

2
Arghh! एक कॉफी हड़पने का समय। धन्यवाद। :)
ArendE

5

यह त्रुटि आमतौर पर तब आती है जब आप किसी ऑब्जेक्ट को कॉल करने के बजाए (=) चिह्न के बराबर करने का प्रयास करते हैं (:)

सही कोड इस तरह होना चाहिए: -

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

3

विकल्प ऑब्जेक्ट में आपने पोर्ट के लिए मान निर्दिष्ट करने के लिए "=" साइन का उपयोग किया है, लेकिन हमें ऑब्जेक्ट "" {}}, इन घुंघराले कोष्ठक बनाने के लिए ऑब्जेक्ट शाब्दिक का उपयोग करते हुए ऑब्जेक्ट में गुणों को असाइन करने के लिए ":" का उपयोग करना होगा। यहां तक ​​कि जब आप फ़ंक्शन अभिव्यक्ति का उपयोग करते हैं या ऑब्जेक्ट के अंदर एक ऑब्जेक्ट बनाते हैं, तो आपको ":" साइन इन करना होगा। उदाहरण के लिए:

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

यहां हमें प्रत्येक संपत्ति के बाद "अल्पविराम" का उपयोग करना होगा। लेकिन आप किसी ऑब्जेक्ट को बनाने और शुरू करने के लिए दूसरी शैली का उपयोग कर सकते हैं।

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

के :बजाय का उपयोग करें=

नीचे दिया गया उदाहरण देखें जो त्रुटि देता है

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

यह सिंटेक्स एरर देता है: अमान्य शॉर्टहैंड प्रॉपर्टी इनिशियलाइज़र।

तो फिर मैं की जगह = के साथ :कि को यह त्रुटि का समाधान।

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

-2

आपके optionsचर आरंभीकरण में एक सिंटैक्स त्रुटि है। आपको port: 8080इसके बजाय उपयोग करना चाहिए port = 8080


इस उत्तर एक टिप्पणी है, बल्कि एक जवाब से :) होना चाहिए
Pipetus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.