दिलचस्प पोस्ट
कैसे vlookup करने के लिए और आर में (जैसे Excel में) भरें? स्थैतिक चर initialisation आदेश मैं पता से अक्षांश और देशांतर कैसे पा सकता हूं? अनक्यूट रेफरेंसएअर: फ़ंक्शन को ऑनक्लिक के साथ परिभाषित नहीं किया गया है मैं एएसपी.नेट एमवीसी नियंत्रक को एक फार्म के बिना स्ट्रिंग की सरणी कैसे पोस्ट कर सकता हूं? टैबकॉन्ट्रॉल से टैबपेज को कैसे छिपाएंगे स्मार्ट पॉइंटर्स (बूस्ट) ने समझाया सेलेनियम – पायथन – ड्रॉप-डाउन मेनू विकल्प मान केवल चर संदर्भ द्वारा पारित किया जाना चाहिए सूची दृश्य के लिए कस्टम एडाप्टर कोणीय 2 कस्टम फॉर्म इनपुट Windows EXE फ़ाइल पर हस्ताक्षर करना अपरिभाषित ऑफसेट PHP त्रुटि एक जावास्क्रिप्ट चर एक डॉलर के संकेत के साथ शुरू क्यों होगा? मुझे ई-मेल पते को कैसे मान्य करना चाहिए?

मैं 'ऑब्जेक्ट' के बजाय, Node.js के console.log () में पूर्ण ऑब्जेक्ट कैसे प्राप्त करूं?

जब console.log() का उपयोग कर डीबग करना है, तो मैं पूरी वस्तु कैसे प्राप्त कर सकता हूं?

 const myObject = { "a":"a", "b":{ "c":"c", "d":{ "e":"e", "f":{ "g":"g", "h":{ "i":"i" } } } } }; console.log(myObject); 

आउटपुट:

 { a: 'a', b: { c: 'c', d: { e: 'e', f: [Object] } } } 

लेकिन मैं संपत्ति की सामग्री को देखना चाहता हूं।

वेब के समाधान से एकत्रित समाधान "मैं 'ऑब्जेक्ट' के बजाय, Node.js के console.log () में पूर्ण ऑब्जेक्ट कैसे प्राप्त करूं?"

आपको util.inspect() का उपयोग करने की आवश्यकता है:

 const util = require('util') console.log(util.inspect(myObject, {showHidden: false, depth: null})) // alternative shortcut console.log(util.inspect(myObject, false, null)) 

आउटपुट

 { a: 'a', b: { c: 'c', d: { e: 'e', f: { g: 'g', h: { i: 'i' } } } } } 

util.inspect() डॉक्स देखें।

आप JSON.stringify उपयोग कर सकते हैं, और कुछ अच्छा इंडेंटेशन प्राप्त कर सकते हैं, साथ ही साथ वाक्यविन्यास को याद रखना आसान भी हो सकता है।

 console.log(JSON.stringify(myObject, null, 4)); 

 { "a": "a", "b": { "c": "c", "d": { "e": "e", "f": { "g": "g", "h": { "i": "i" } } } } } 

तीसरे तर्क ने इंडेंटेशन स्तर निर्धारित किया है, ताकि आप वांछित के रूप में समायोजित कर सकें।

यदि ज़रूरी है तो यहां अधिक विवरण:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

(कम से कम) नोड। जेएस v0.10.33 (स्थिर) / v0.11.14 (अस्थिर) से कई उपयोगी उत्तरों का एक संकलन संभवतः (कम से कम) v7.7.4 (इस उत्तर के नवीनतम अपडेट के रूप में संस्करण वर्तमान) के माध्यम से ।

tl; डॉ

util.inspect() निदान आउटपुट के दिल में है: console.log() और console.dir() साथ-साथ नोड.जेएस आरईपीएल का उपयोग util.inspect() निहित है , इसलिए यह आम तौर पर आवश्यक नहीं require('util') और कॉल util.inspect() सीधे

प्रश्न में उदाहरण के लिए वांछित आउटपुट प्राप्त करने के लिए:

 console.dir(myObject, { depth: null }); // `depth: null` ensures unlimited recursion 

नीचे दिए गए विवरण।


  • console.log() (और इसके उपनाम, console.info() ):

    • अगर पहला तर्क एक प्रारूप स्ट्रिंग नहीं है : util.inspect() स्वतः प्रत्येक तर्क पर लागू होता है:
      • o = { one: 1, two: 'deux', foo: function(){} }; console.log(o, [1,2,3]) // -> '{ one: 1, two: 'deux', foo: [Function] } [ 1, 2, 3 ]'
      • ध्यान दें कि आप इस मामले में util.inspect() माध्यम से विकल्प नहीं दे सकते , जो 2 उल्लेखनीय सीमाओं का तात्पर्य करता है:
        • आउटपुट की संरचनात्मक गहराई 2 स्तर (डिफ़ॉल्ट) तक सीमित है
          • चूंकि आप इसे console.log() साथ नहीं बदल सकते हैं, तो आपको इसके बजाय console.dir() उपयोग करना होगा: console.dir(myObject, { depth: null } असीमित गहराई से प्रिंट करता है , नीचे देखें।
        • आप पर सिंटैक्स रंग बदल नहीं सकते।
    • यदि पहला तर्क एक प्रारूप स्ट्रिंग है (नीचे देखें): प्रारूप स्ट्रिंग के आधार पर शेष तर्क प्रिंट करने के लिए util.format() का उपयोग करता है (नीचे देखें); उदाहरण के लिए:
      • o = { one: 1, two: 'deux', foo: function(){} }; console.log('o as JSON: %j', o) // -> 'o as JSON: {"one":1,"two":"deux"}'
      • ध्यान दें:
        • वस्तुओं का प्रतिनिधित्व करने के लिए कोई प्लेसहोल्डर नहीं है। util.inspect()
        • %j साथ जेसन जेन जेनरेट किया गया है, वह सुंदर मुद्रित नहीं है।
  • console.dir() :

    • निरीक्षण करने के लिए केवल 1 तर्क स्वीकार करता है , और हमेशा util.inspect() लागू होता है – मूलतः विकल्पों के बिना util.inspect() लिए आवरण; डिफ़ॉल्ट रूप से; उदाहरण के लिए:
      • o = { one: 1, two: 'deux', foo: function(){} }; console.dir(o); // Effectively the same as console.log(o) in this case.
    • node.js v0.11.14 + : वैकल्पिक द्वितीय तर्क util.inspect() लिए विकल्पों को निर्दिष्ट करता है – नीचे देखें; उदाहरण के लिए:
      • console.dir({ one: 1, two: 'deux'}, { colors: true }); // node 0.11+: Prints object representation with syntax coloring.
  • नोड.जेएस आरईपीएल : आरईपीएल असल में किसी एक्सप्रेशंस के रिटर्न वैल्यू को util.inspect() साथ सिंटैक्स रंग देने के साथ प्रिंट करता है ;
    यानी, बस एक चर का नाम टाइप करें और एंटिंग मारो इसके मूल्य का एक निरीक्षण किया संस्करण मुद्रित होगा; उदाहरण के लिए:
    • o = { one: 1, two: 'deux', foo: function(){} } // echoes the object definition with syntax coloring.

util.inspect() स्वचालित रूप से (और हमेशा) सुंदर-प्रिंट्स ऑब्जेक्ट और सरणी का प्रतिनिधित्व करता है , लेकिन जब ज़रूरत होती है तो बहु- लाइन आउटपुट तैयार करती है – अगर सब कुछ एक पंक्ति पर फिट होता है, तो केवल 1 लाइन प्रिंट होती है।

  • डिफ़ॉल्ट रूप से, आउटपुट को लगभग 60 वर्णों में लपेटा जाता है धन्यवाद, शेरी , भले ही आउटपुट किसी फ़ाइल या टर्मिनल पर भेजा जाए या नहीं। व्यवहार में, चूंकि लाइन ब्रेक केवल संपत्ति की सीमाओं पर होती है , आप अक्सर छोटी लाइनों के साथ समाप्त होंगे, लेकिन वे लंबे समय तक (उदाहरण के लिए, लंबी संपत्ति मूल्यों के साथ) हो सकते हैं।

  • V6.3.0 + में आप 60-वर्ण सीमा को ओवरराइड करने के लिए breakLength विकल्प का उपयोग कर सकते हैं; यदि आप इसे Infinity सेट करते हैं, तो सब कुछ एक लाइन पर आउटपुट होते हैं।

यदि आप सुंदर प्रिंटिंग पर अधिक नियंत्रण चाहते हैं , तो 3 rd तर्क के साथ JSON.stringify() का उपयोग करने पर विचार करें, लेकिन निम्न नोट करें:

  • ऑब्जेक्ट के साथ विफल रहता है जिसमें परिपत्र संदर्भ , जैसे वैश्विक संदर्भ में module
  • तरीके (कार्य) डिजाइन द्वारा शामिल नहीं किया जाएगा।
  • आप छिपा (गैर-गणनायोग्य) गुण दिखाने में ऑप्ट इन नहीं कर सकते
  • उदाहरण कॉल:
    • JSON.stringify({ one: 1, two: 'deux', three: true}, undefined, 2); // creates a pretty-printed multiline JSON representation indented with 2 spaces

util.inspect() विकल्प ऑब्जेक्ट (दूसरा तर्क):

स्रोत: http://nodejs.org/api/util.html#util_util_format_format

एक वैकल्पिक विकल्प ऑब्जेक्ट पारित किया जा सकता है जो प्रारूपित स्ट्रिंग के कुछ पहलुओं को बदलता है:

  • showHidden
    • यदि true , तो ऑब्जेक्ट्स की गैर-गणना योग्य गुण [उन लोगों को निर्दिष्ट नहीं किया गया है, जब आप Object.keys(obj) या Object.keys(obj) for keys in obj उपयोग करते हैं तो भी दिखाया जाएगा। डिफ़ॉल्ट से false
  • depth
    • बताता है कि ऑब्जेक्ट को स्वरूपित करते समय कितनी बार रिक्ति की जांच होती है यह बड़ी जटिल वस्तुओं का निरीक्षण करने के लिए उपयोगी है। 2 से डिफ़ॉल्ट। इसे अनिश्चित काल के लिए पुनरारंभ करें, null गुजारें।
  • colors
    • यदि सत्य है, तो आउटपुट ANSI रंग कोड के साथ स्टाइल किया जाएगा डिफ़ॉल्ट से false रंग अनुकूलन योग्य हैं [… – लिंक देखें]।
  • customInspect
    • यदि false , तो inspect() जा रही वस्तुओं पर कस्टम inspect() कार्यों को नहीं कहा जाएगा। डिफ़ॉल्ट रूप से true

util.format() प्रारूप-स्ट्रिंग प्लेसहोल्डर (प्रथम तर्क)

स्रोत: http://nodejs.org/api/util.html#util_util_format_format

  • %s – स्ट्रिंग
  • %d – संख्या (पूर्णांक और फ्लोट दोनों)
  • %j – JSON
  • % – एकल प्रतिशत चिह्न ('%')। यह तर्क नहीं लेता है

एक और सरल तरीका यह है कि इसे जेएसएन में बदल दिया जाए

 console.log('connection : %j', myObject); 

इसे इस्तेमाल करे:

 console.dir(myObject,{depth:null}) 

शायद console.dirconsole.dir आपको ज़रूरत है

http://nodejs.org/api/console.html#console_console_dir_obj

Obj पर util.inspect का उपयोग करता है और stdout के लिए स्ट्रिंग का परिणाम प्रिंट करता है।

यदि आप अधिक नियंत्रण की आवश्यकता है तो उपयोग विकल्प का उपयोग करें।

आप यह भी कर सकते हैं

 console.log(JSON.stringify(myObject, null, 3)); 

Node.js 6.4.0 के बाद से, यह util.inspect.defaultOptions साथ खूबसूरत हल किया जा सकता है:

 require("util").inspect.defaultOptions.depth = null; console.log(myObject); 

ऑब्जेक्ट का निरीक्षण करने का एक अच्छा तरीका नोड के लिए क्रोम डेवलपर्स के साथ नोड – इंस्पेक्टर विकल्प का उपयोग करना है।

 node.exe --inspect www.js 

chrome://inspect/#devices खोलें और नोड के लिए समर्पित डॉटकूल खोलें पर क्लिक करें

अब हर लॉक ऑब्जेक्ट निरीक्षक में उपलब्ध है जैसे क्रोम में नियमित जेएस चल रहा है।

यहां छवि विवरण दर्ज करें

निरीक्षक को फिर से खोलने की कोई ज़रूरत नहीं है, नोड शुरू होने या पुनरारंभ होने के साथ-साथ यह स्वचालित रूप से नोड से जुड़ जाता है। नोड के लिए दोनों -इंटपेक्ट और क्रोम देवट्रूल्स नोड और क्रोम के पुराने संस्करणों में उपलब्ध नहीं हो सकते हैं।

आप बस अपने ऑब्जेक्ट में एक inspect() विधि जोड़ सकते हैं जो console.log संदेशों में ऑब्जेक्ट के प्रतिनिधित्व को ओवरराइड करेगा

उदाहरण के लिए:

 var myObject = { "a":"a", "b":{ "c":"c", "d":{ "e":"e", "f":{ "g":"g", "h":{ "i":"i" } } } } }; myObject.inspect = function(){ return JSON.stringify( this, null, ' ' ); } 

फिर, आपके ऑब्जेक्ट को console.log और node shell दोनों में आवश्यक के रूप में प्रदर्शित किया जाएगा

स्क्रिप्ट चलते समय एक साधारण चाल debug मॉड्यूल का उपयोग DEBUG_DEPTH=null पर्यावरण चर के रूप में करने के लिए किया DEBUG_DEPTH=null

पूर्व।

DEBUG = * DEBUG_DEPTH = नल नोड index.js

आप में कोड

 const debug = require('debug'); debug("%O", myObject); 

ऑडराइडिंग के लिए ऑडराइडिंग के लिए नोड आरईपीएल का एक अंतर्निहित समाधान है, यहां देखें।

util.inspect() मॉड्यूल आंतरिक रूप से util.inspect() का उपयोग करता है, जब मुद्रण मूल्य हालांकि, util.inspect ऑब्जेक्ट के inspect() फ़ंक्शन को कॉल करता है, अगर इसमें एक है