¿Cómo obtener el nombre de archivo actual, el nombre de la función y el número de línea?
Quiero usarlo para fines de registro / depuración, equivalente a __FILE__, __LINE__ en c
¿Cómo obtener el nombre de archivo actual, el nombre de la función y el número de línea?
Quiero usarlo para fines de registro / depuración, equivalente a __FILE__, __LINE__ en c
Respuestas:
Node.js proporciona una API estándar para hacerlo: Path .
Obtener el nombre del script actual es fácil:
var path = require('path');
var scriptName = path.basename(__filename);
script.js, obtendrá script.js. Si desea tener el nombre solo sin extensión, ya que estamos hablando aquí de un jsguión que puede usar var scriptName = path.basename(__filename, '.js');ovar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filenameno está definido en un módulo ES6.
CommonJSvariables no están disponibles en los módulos ES. Se pueden crear equivalentes de __filenamey __dirnamedentro de cada archivo mediante import.meta.url.
dentro de un módulo, puede hacer cualquiera de las siguientes acciones para obtener la ruta completa con el nombre de archivo
this.filename;
module.filename;
__filename;
Si solo desea el nombre real sin ruta o extensión, puede hacer algo como esto.
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
var path = require('path');antemano o de cambiarlo amodule.filename.slice(__filename.lastIndexOf(require('path').sep)+1, module.filename.length -3);
path.basename(module.filename, path.extname(module.filename))
Para obtener solo el nombre del archivo. Ningún módulo adicional simplemente:
// 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' ]
*
**/
Aquí usamos la función de división con expresión regular como primer parámetro.
La expresión regular que queremos para el separador es [\/](dividida por /o \) pero el /símbolo debe escaparse para distinguirlo del terminador de expresiones regulares /, entonces /[\\/]/.
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
Realmente debería usar path.basenameen su lugar ( documentado por primera vez en Node.js v0.1.25 ), porque maneja todos los casos de esquina que no desea conocer, como nombres de archivo con barras en el interior (por ejemplo, archivo llamado "foo \ bar" en unix). Vea la pathrespuesta anterior .
javascript splity comience.
También puede mirar consola-plus . Esto agrega el nombre de archivo y el número de lino a cualquier texto de registro y tiene diferentes colores para .log, .info y .error.
Sé que ya ha pasado mucho tiempo, pero lo que hice fue __filename.split('\\').pop(). Esto obtendrá la ruta completa con el nombre del archivo, divídalo y \luego obtenga el último índice que será su nombre de archivo.
__filename.split('/').pop()
puede usar esta función para obtener el nombre del archivo:
/**
* @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(/^.*[\\\/]/, '');
}
si usa nodejs, puede instalar el paquete que incluye esta función https://www.npmjs.com/package/jotils