Wie erhalte ich den aktuellen Dateinamen, Funktionsnamen und die Zeilennummer?
Ich mag es für die Protokollierung verwenden / Debugging - Zwecke, das entspricht __FILE__, __LINE__ in c
Wie erhalte ich den aktuellen Dateinamen, Funktionsnamen und die Zeilennummer?
Ich mag es für die Protokollierung verwenden / Debugging - Zwecke, das entspricht __FILE__, __LINE__ in c
Antworten:
Node.js bietet hierfür eine Standard-API: Pfad .
Das Abrufen des Namens des aktuellen Skripts ist dann einfach:
var path = require('path');
var scriptName = path.basename(__filename);
script.jsSie script.js. Wenn Sie den Namen nur ohne Erweiterung haben möchten, da wir hier von einem jsSkript sprechen, können Sie es verwenden var scriptName = path.basename(__filename, '.js');odervar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filenameist in einem ES6-Modul nicht definiert.
CommonJSVariablen sind in ES-Modulen nicht verfügbar. Entsprechungen von __filenameund __dirnamekönnen innerhalb jeder Datei über erstellt werden import.meta.url.
Innerhalb eines Moduls können Sie eine der folgenden Aktionen ausführen, um den vollständigen Pfad mit dem Dateinamen abzurufen
this.filename;
module.filename;
__filename;
Wenn Sie nur den tatsächlichen Namen ohne Pfad oder Erweiterung möchten, können Sie so etwas tun.
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))
Nur um den Dateinamen zu erhalten. Kein zusätzliches Modul einfach:
// 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' ]
*
**/
Hier verwenden wir die Split- Funktion mit regulärem Ausdruck als erstem Parameter.
Der reguläre Ausdruck wir für Separator wollen , ist [\/](Split durch /oder \) , aber /Symbol muss entwertet werden sie von regex Terminator zu unterscheiden /, so/[\\/]/ .
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
Sie sollten path.basenamestattdessen stattdessen verwenden (zuerst in Node.js v0.1.25 dokumentiert ), da es alle Eckfälle behandelt, die Sie nicht kennen möchten, wie Dateinamen mit Schrägstrichen (z. B. Datei mit dem Namen "foo \ bar" unter Unix). Siehe pathAntwort oben .
javascript splitund loslegen.
Sie können sich auch Console-Plus ansehen . Dies fügt jedem Protokolltext Dateinamen und Leinen hinzu und hat unterschiedliche Farben für .log, .info und .error.
Ich weiß, es ist schon lange her, aber was ich getan habe, ist __filename.split('\\').pop(). Dadurch wird der vollständige Pfad mit dem Dateinamen angezeigt. Teilen Sie ihn auf \und erhalten Sie den letzten Index, der Ihr Dateiname ist.
__filename.split('/').pop()
Mit dieser Funktion können Sie den Dateinamen abrufen:
/**
* @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(/^.*[\\\/]/, '');
}
Wenn Sie nodejs verwenden, können Sie das Paket installieren, das diese Funktion https://www.npmjs.com/package/jotils enthält