वर्तमान फ़ाइल नाम, फ़ंक्शन नाम और लाइन नंबर कैसे प्राप्त करें?
मैं इसका उपयोग लॉगिंग / डीबगिंग उद्देश्य के लिए करना चाहता हूं __FILE__
, __LINE__
सी के बराबर
वर्तमान फ़ाइल नाम, फ़ंक्शन नाम और लाइन नंबर कैसे प्राप्त करें?
मैं इसका उपयोग लॉगिंग / डीबगिंग उद्देश्य के लिए करना चाहता हूं __FILE__
, __LINE__
सी के बराबर
जवाबों:
Node.js ऐसा करने के लिए एक मानक API प्रदान करता है: पथ ।
वर्तमान स्क्रिप्ट का नाम प्राप्त करना तब आसान है:
var path = require('path');
var scriptName = path.basename(__filename);
script.js
, आपको मिलेगा script.js
। आप केवल विस्तार के बिना नाम करना चाहते हैं के रूप में हम यहाँ एक की बात कर रहे हैं js
स्क्रिप्ट आप उपयोग कर सकते हैं var scriptName = path.basename(__filename, '.js');
याvar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filename
ईएस 6 मॉड्यूल में परिभाषित नहीं किया गया है।
CommonJS
वेरिएबल ES मॉड्यूल में उपलब्ध नहीं हैं। के समकक्ष __filename
और __dirname
प्रत्येक फ़ाइल के माध्यम से बनाया जा सकता है import.meta.url
।
एक मॉड्यूल के भीतर आप फ़ाइलनाम के साथ पूर्ण पथ प्राप्त करने के लिए निम्न में से कोई भी कर सकते हैं
this.filename;
module.filename;
__filename;
यदि आप केवल वास्तविक नाम को बिना किसी पथ या विस्तार के चाहते हैं तो आप ऐसा कुछ कर सकते हैं।
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
var path = require('path');
या तो पहले से भूल न जाएं या इसे बदल देंmodule.filename.slice(__filename.lastIndexOf(require('path').sep)+1, module.filename.length -3);
path.basename(module.filename, path.extname(module.filename))
केवल फ़ाइल नाम प्राप्त करने के लिए। कोई अतिरिक्त मॉड्यूल बस:
// abc.js
console.log(__filename.slice(__dirname.length + 1));
// abc
console.log(__filename.slice(__dirname.length + 1, -3));
'use strict';
const scriptName = __filename.split(/[\\/]/).pop();
console.log(__filename);
// 'F:\__Storage__\Workspace\StackOverflow\yourScript.js'
const parts = __filename.split(/[\\/]/);
console.log(parts);
/*
* [ 'F:',
* '__Storage__',
* 'Workspace',
* 'StackOverflow',
* 'yourScript.js' ]
*
**/
यहां हम पहले पैरामीटर के रूप में नियमित अभिव्यक्ति के साथ विभाजन फ़ंक्शन का उपयोग करते हैं ।
विभाजक के लिए हम जो नियमित अभिव्यक्ति चाहते हैं, वह है (द्वारा विभाजित या ) लेकिन प्रतीक को रेगेक्स टर्मिनेटर से अलग करने के लिए बच जाना चाहिए , इसलिए । [\/]
/
\
/
/
/[\\/]/
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
आपको वास्तव में path.basename
इसके बजाय (पहले Node.js v0.1.25 में प्रलेखित ) का उपयोग करना चाहिए , क्योंकि यह उन सभी कोने के मामलों को संभालता है, जिनके बारे में आप फाइलनाम के बारे में नहीं जानना चाहते हैं जैसे कि अंदर स्लैश के साथ फाइल (जैसे कि यूनिक्स पर "foo \ bar" नाम की फ़ाइल)। देखें path
जवाब ऊपर ।
javascript split
और जा रहा है।
आप कंसोल-प्लस को भी देख सकते हैं । यह किसी भी लॉगिंग टेक्स्ट में फ़ाइल नाम और लिनेनंबर जोड़ता है। इसमें .log, .info और andor के लिए अलग-अलग रंग होते हैं।
मुझे पता है कि यह पहले ही एक लंबा समय हो चुका है, लेकिन मैंने जो किया है __filename.split('\\').pop()
। यह फ़ाइलनाम के साथ पूर्ण पथ प्राप्त करेगा, इसे \
तब तक विभाजित करें जब तक कि अंतिम सूचकांक प्राप्त न हो जाए जो आपका फ़ाइल नाम होगा।
__filename.split('/').pop()
आप फ़ाइल नाम प्राप्त करने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं:
/**
* @description
* get file name from path
* @param {string} path path to get file name
* @returns {string} file name
* @example
* getFileName('getFileName/index.js') // => index.js
*/
export default function getFileName(path) {
return path.replace(/^.*[\\\/]/, '');
}
यदि आप नोडज का उपयोग करते हैं, तो आप उस पैकेज को स्थापित कर सकते हैं जिसमें यह फ़ंक्शन शामिल है https://www.npmjs.com/package/jotils