Comment obtenir le nom du fichier actuel, le nom de la fonction et le numéro de ligne?
Je veux l'utiliser à des fins de journalisation/débogage, équivalent à __FILE__
, __LINE__
en c
Comment obtenir le nom du fichier actuel, le nom de la fonction et le numéro de ligne?
Je veux l'utiliser à des fins de journalisation/débogage, équivalent à __FILE__
, __LINE__
en c
Node.js fournit une API standard pour le faire: Path.
Obtenir le nom du script actuel est alors facile:
var path = require('path');
var scriptName = path.basename(__filename);
Pour un script nommé script.js
, vous obtiendrez script.js
. Si vous voulez avoir seulement le nom sans extension, comme nous parlons ici d'un script js
, vous pouvez utiliser var scriptName = path.basename(__filename, '.js');
ou var scriptName = path.basename(__filename, path.extname(__filename))
Dans un module, vous pouvez faire l'une des choses suivantes pour obtenir le chemin complet avec le nom de fichier
this.filename;
module.filename;
__filename;
Si vous voulez juste le nom réel sans chemin ou extension, vous pouvez faire quelque chose comme ceci.
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
Vous voulez probablement utiliser path.sep pour le rendre compatible avec différentes plates-formes. Voici ce que j'ai fait __filename.slice(__filename.lastIndexOf(path.sep)+1);
Pour ceux qui veulent simplement copier-coller ce super pratique one-liner, n'oubliez pas de soit var path = require('path');
au préalable ou de le changer en module.filename.slice(__filename.lastIndexOf(require('path').sep)+1, module.filename.length -3);
Sauf si votre extension n'a pas 2 caractères de longueur, ce qui est totalement possible car vous pouvez lier l'interprétation de script à n'importe quelle extension de fichier que vous voulez... donc cela peut ne pas être une bonne solution générale.
'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' ]
*
**/
Ici, nous utilisons la fonction split avec une expression régulière comme premier paramètre.
L'expression régulière que nous voulons pour le séparateur est [\/]
(séparé par /
ou \
), mais le symbole /
doit être échappé pour le distinguer du terminateur de regex /
, donc /[\\/]/
.
const scriptName = __filename.split(/[\\/]/).pop(); // Retire le dernier élément du tableau
console.log(scriptName);
// 'yourScript.js'
Vous devriez vraiment utiliser path.basename
à la place (documenté pour la première fois dans Node.js v0.1.25), car cela gère tous les cas particuliers que vous ne voulez pas connaître comme les noms de fichiers avec des slashes à l'intérieur (par exemple, un fichier nommé "foo\bar" sur unix). Voir la réponse path
ci-dessus ci-dessus.
@DanielCheung Voici! Mais vraiment, tout cela est recherchable sur Internet, il suffit de rechercher javascript split
et de commencer.
Vous pouvez également jeter un œil à console-plus. Cela ajoute le nom du fichier et le numéro de ligne à tout texte de journalisation et propose des couleurs différentes pour .log, .info et .error.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Fichier: stackoverflow.com/questions/3133243/… Ligne: github.com/visionmedia/callsite
1 votes
Je vois que personne n'a jamais trouvé de bonne réponse pour le nom de la fonction ou le numéro de ligne.