Como obter o nome do arquivo atual, o nome da função e o número da linha?
Quero usá-lo para fins de registro / depuração, equivalente a __FILE__
, __LINE__
em c
Como obter o nome do arquivo atual, o nome da função e o número da linha?
Quero usá-lo para fins de registro / depuração, equivalente a __FILE__
, __LINE__
em c
Respostas:
dentro de um módulo você pode fazer qualquer um dos seguintes para obter o caminho completo com o nome do arquivo
this.filename;
module.filename;
__filename;
Se você deseja apenas o nome real, sem caminho ou extensão, pode fazer algo assim.
module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);
Para obter apenas o nome do arquivo. Nenhum módulo adicional simplesmente:
// 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' ]
*
**/
Aqui usamos a função de divisão com expressão regular como o primeiro parâmetro.
A expressão regular que queremos como separador é [\/]
(dividida por /
ou \
), mas o /
símbolo deve ser escapado para distingui-lo do terminador regex /
, portanto /[\\/]/
.
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
Você realmente deve usar em path.basename
vez disso ( documentado primeiro em Node.js v0.1.25 ), porque ele lida com todos os casos extremos que você não quer saber, como nomes de arquivos com barras dentro (por exemplo, arquivo denominado "foo \ bar" no unix). Veja a path
resposta acima .
Você também pode olhar para console-plus . Isso adiciona o nome do arquivo e o número da linha a qualquer texto de registro e tem cores diferentes para .log, .info e .error.
você pode usar esta função para obter o nome do arquivo:
/**
* @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(/^.*[\\\/]/, '');
}
se você usar nodejs, você pode instalar o pacote que inclui esta função https://www.npmjs.com/package/jotils