programing

Node.js - 현재 파일 이름 가져오기

css3 2023. 7. 24. 22:43

Node.js - 현재 파일 이름 가져오기

현재 파일 이름, 함수 이름 및 라인 번호를 가져오는 방법은 무엇입니까?

로그/디버깅 목적으로 사용하고 싶습니다.__FILE__,__LINE__주식회사

Node.js는 이를 위한 표준 API인 경로를 제공합니다.

그러면 현재 스크립트의 이름을 쉽게 얻을 수 있습니다.

var path = require('path');
var scriptName = path.basename(__filename);

모듈 내에서 다음 중 하나를 수행하여 파일 이름으로 전체 경로를 가져올 수 있습니다.

this.filename;
module.filename;
__filename;

경로나 확장자가 없는 실제 이름을 원할 경우 다음과 같은 작업을 수행할 수 있습니다.

module.filename.slice(__filename.lastIndexOf(path.sep)+1, module.filename.length -3);

파일 이름만 가져옵니다.단순히 추가 모듈 없음:

// 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에서 처음 문서화됨) 슬래시가 있는 파일 이름과 같이 알고 싶지 않은 모든 코너 케이스를 처리하기 때문입니다(예: 유닉스에서 "foo\bar"라는 이름의 파일). 참조path상기의 회답

콘솔 플러스도 볼 수 있습니다.이렇게 하면 로깅 텍스트에 파일 이름과 라인 번호가 추가되고 .log, .info 및 .error에 대한 색상이 다릅니다.

파일 이름을 로거의 태그로 사용하고 싶었기 때문에 가장 직접적으로 원하는 것은 다음과 같습니다.

__filename.substring(__dirname.length + 1, __filename.lastIndexOf("."))

이미 오래전 일이지만, 제가 한 일은__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

여기에 나열되지 않았기 때문에 다른 옵션은 다음을 제거하는 것입니다.__dirname에서__filename.

__filename.replace(`${__dirname}/`, '')

저는 당신이 수입을 원하지 않는다면 그것이 유용하다고 생각합니다.path모듈.하지만, 저는 믿습니다.path.basename(__filename)가 가장 적합합니다.

언급URL : https://stackoverflow.com/questions/14201475/node-js-getting-current-filename