/ / क्या कोई इस त्रुटि की व्याख्या कर सकता है: अभिव्यक्ति विवरण असाइनमेंट या कॉल नहीं है - node.js, socket.io

क्या कोई इस त्रुटि को समझा सकता है: अभिव्यक्ति कथन असाइनमेंट या कॉल - node.js, socket.io नहीं है

मेरे पास कोड के ये दो ब्लॉक हैं।

socket.on("chatMessage", function(message) {
message.type = "message";
message.created = Date.now();
message.username : socket.request.user.username;
});

socket.on("disconnect", function() {
io.emit("chatMessage", {
type: "status",
text: socket.request.user.username + " left the conversation.",
created: Date.now(),
username: socket.request.user.username,
});
});

अगर मैं बदलूं : या = दूसरे के लिए, वेबस्टॉर्म मुझे त्रुटि देता है।Expression statement is not assignment or call. क्या कोई समझा सकता है कि ऐसा क्यों होता है? अग्रिम में धन्यवाद।

उत्तर:

जवाब के लिए 3 № 1

आपके कोड का पहला ब्लॉक किसी फ़ंक्शन को परिभाषित कर रहा हैखंड मैथा। कोड का आपका दूसरा ब्लॉक ऑब्जेक्ट परिभाषा को परिभाषित कर रहा है। प्रत्येक के लिए अलग-अलग सिंटैक्स की अनुमति है और आपको संदर्भ से मेल खाने के लिए उपयुक्त सिंटैक्स का उपयोग करना होगा।

कोड का आपका पहला ब्लॉक फ़ंक्शन ब्लॉक में केवल कथनों की एक श्रृंखला निष्पादित कर रहा है। { इस पंक्ति के अंत में:

socket.on("chatMessage", function(message) {

फ़ंक्शन ब्लॉक की शुरुआत को परिभाषित करता है. इस प्रकार, जावास्क्रिप्ट उन बयानों की तलाश में है जो उस संदर्भ में कानूनी हैं। कोड की प्रत्येक पंक्ति में एक कानूनी Javascript कथन होना आवश्यक है। तथा,

message.username : socket.request.user.username;

उस संदर्भ में कानूनी बयान नहीं है। यदि आप को मान निर्दिष्ट करने का प्रयास कर रहे थे message.username, तो उसके लिए मान्य सिंटैक्स होगा:

message.username = socket.request.user.username;

आपके दूसरे ब्लॉक में, आप ऑब्जेक्ट परिभाषा के बीच में हैं। { इस पंक्ति के अंत में:

io.emit("chatMessage", {

एक वस्तु परिभाषा शुरू करता है. जैसे, उस वस्तु पर किसी संपत्ति को परिभाषित करने के लिए कानूनी वाक्यविन्यास इस तरह दिखता है:

username: socket.request.user.username,

तो, यहाँ दो कुंजियाँ हैं:

  1. पहचानना जब a { फ़ंक्शन ब्लॉक की शुरुआत बनाम ऑब्जेक्ट परिभाषा की शुरुआत को दर्शाता है। आपका पहला कोड ब्लॉक फ़ंक्शन बॉडी शुरू करता है, दूसरा ऑब्जेक्ट परिभाषा शुरू करता है।

  2. किसी फ़ंक्शन ब्लॉक में अनुमत सिंटैक्स और ऑब्जेक्ट परिभाषा में अनुमत सिंटैक्स के बीच अंतर को जानना।


जवाब के लिए 0 № 2

यह ठीक है:

message.type = "message";

यह ठीक है:

message.created = Date.now();

यह नहीं है:

message.username : socket.request.user.username;

यह होना चाहिए:

message.username = socket.request.user.username;

आपका प्रश्न स्पष्ट नहीं है - जब आप इसे बदलते हैं तो क्या आपको चेतावनी मिलती है : सेवा मेरे = या इससे पहले कि आप इसे बदल दें। आपने यह नहीं बताया कि कौन सी रेखा त्रुटि का कारण बनती है, मैंने मान लिया कि यह वही था जिसके साथ : के बजाय =.

क्या आप सुनिश्चित हैं कि आप टाइपस्क्रिप्ट का उपयोग नहीं कर रहे हैं जो कोलन की अलग-अलग व्याख्या कर सकता है?