現在のファイル名、関数名、行番号を取得するにはどうすればよいですか?
私はと同等の目的を、デバッグ/ロギングのためにそれを使用したい__FILE__、__LINE__ Cに
現在のファイル名、関数名、行番号を取得するにはどうすればよいですか?
私はと同等の目的を、デバッグ/ロギングのためにそれを使用したい__FILE__、__LINE__ Cに
回答:
Node.jsは、そのための標準APIを提供します。パス。
現在のスクリプトの名前を取得するのは簡単です。
var path = require('path');
var scriptName = path.basename(__filename);
script.js場合、を取得しscript.jsます。拡張子を付けずに名前だけを付けたい場合は、ここでjs使用できるスクリプトについて説明します。var scriptName = path.basename(__filename, '.js');またはvar scriptName = path.basename(__filename, path.extname(__filename))
path.parse(__filename).name
__filenameES6モジュールでは定義されていません。
モジュール内では、次のいずれかを実行して、ファイル名を含む完全なパスを取得できます。
this.filename;
module.filename;
__filename;
パスや拡張子のない実際の名前が必要な場合は、次のようにすることができます。
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))
ファイル名のみを取得します。追加モジュールはありません:
// 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' ]
*
**/
ここでは、最初のパラメーターとして正規表現を使用した分割関数を使用します。
私たちは、セパレータに必要な正規表現がある(で分割または)が、記号は、正規表現ターミネータからそれを区別するためにエスケープする必要がありますので、。 [\/]/\///[\\/]/
const scriptName = __filename.split(/[\\/]/).pop(); // Remove the last array element
console.log(scriptName);
// 'yourScript.js'
実際にはpath.basename代わりに使用する必要があります(Node.js v0.1.25で最初に文書化))。これは、スラッシュを含むファイル名(UNIXでは "foo \ bar"という名前のファイルなど)について知りたくないすべてのケースを処理するためです。上記のpath回答を参照してください。
javascript splitです。
console-plusもご覧ください。これにより、ロギングテキストにファイル名と行番号が追加され、.log、.info、.errorの色が異なります。
もう久しぶりですが、やってみました__filename.split('\\').pop()。これはファイル名を含むフルパスを取得し、それを分割して、ファイル名に\なる最後のインデックスを取得します。
__filename.split('/').pop()
この関数を使用してファイル名を取得できます。
/**
* @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(/^.*[\\\/]/, '');
}
nodejsを使用する場合、この関数を含むパッケージをインストールできます https://www.npmjs.com/package/jotils