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.js
Sie script.js
. Wenn Sie den Namen nur ohne Erweiterung haben möchten, da wir hier von einem js
Skript sprechen, können Sie es verwenden var scriptName = path.basename(__filename, '.js');
odervar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filename
ist in einem ES6-Modul nicht definiert.
CommonJS
Variablen sind in ES-Modulen nicht verfügbar. Entsprechungen von __filename
und __dirname
kö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.basename
stattdessen 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 path
Antwort oben .
javascript split
und 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