programing

Node.js에서 상위 디렉토리 이름 가져오기

skycolor 2023. 9. 4. 19:40
반응형

Node.js에서 상위 디렉토리 이름 가져오기

Node.js를 사용하고 있으며 파일의 상위 디렉터리 이름을 가져오려고 합니다.나는 그 파일을 가지고 있습니다."../test1/folder1/FolderIWant/test.txt".

갖고싶다"FolderIWant".

시도해 본 결과:

var path = require('path');
var parentDir = path.dirname(filename);

하지만 그것은 돌아옵니다.../test1/folder1/FolderIWant.

원하는 것은 다음과 같습니다.

path.basename(path.dirname(filename))

대신 @danielwolf의 대답을 사용하는 것이 좋습니다.


사용하다split()그리고.pop():

path.dirname(filename).split(path.sep).pop()

Daniel Wolf의 대답은 정확합니다. 또한 부모 dir의 전체 경로를 원하는 경우:

require('path').resolve(__dirname, '..')
const path = require("path")
path.dirname(path.basename(__dirname))

process.mainModule속성이 에서 사용되지 않습니다.v14.0.0foo.js를 실행하는 경우node foo.js(예: 일부 dir/foo.js"),

const path = require("path");

module.exports = path.dirname(require.main.filename);

결과: some dir

대신 require.main을 사용합니다.

여기서 답변은 어느 정도 효과가 있었지만, 인기 있는 앱-루트 경로 모듈을 사용하는 것이 경로를 지정하는 데 더 나은 앵커 포인트라는 것을 알게 되었습니다.

import { path as arp } from 'app-root-path'
import path from 'path'

const root = path.resolve(arp, '../') // the parent of the root path

export const rootDirname = root

다음과 같은 사용 예:

import { rootDirname } from './functions/src/utils/root-dirname'
import { getJsonFromFile } from './app/utils/get-json-from-file'

const firebaseJson = getJsonFromFile(`${rootDirname}/firebase.json`)

여기서 최선의 답변은 아니지만 다른 답변에서 다루지 않는 옵션일 수 있습니다.

전형적인__dirname솔루션이 ESM 범위에서 작동하지 않습니다.디렉터리 트리에서 한 단계 높은 수준으로 이동하기 위해 다음과 같은 해결책을 생각해냈습니다.

import { fileURLToPath } from "url";
import path from "path";

const __filename = fileURLToPath(import.meta.url);
// First find out the __dirname, then resolve to one higher level in the dir tree
const __dirname = path.resolve(path.dirname(__filename), "../");

파일이 위치한 절대 디렉터리 경로만 필요한 경우 다음을 제외할 수 있습니다.path.resolve()불러.

const path = require('path');

module.exports = path.dirname(process.mainModule.filename)

루트 디렉터리를 가져오려면 이 위치를 사용하십시오.

2019년 06월 06일 현재 노드를 사용하다가 방금 접속한 문제가 발생했습니다.filename그래서 그 대신에, 저는 그것을 약간 수정하고 다음과 같이 사용했습니다.

path.dirname(__filename).split(path.sep).pop()

이제 전체 경로가 아닌 현재 디렉터리의 디렉터리 이름을 얻게 됩니다.이전 답변들이 다른 사람들에게 도움이 될 수도 있는 것처럼 보이지만, 저에게는 노드가 상수 또는 변수를 찾고 있었지만 찾을 수 없었기 때문에 문제가 발생했습니다.

경로와 같은 노드 모듈이 없는 가장 간단한 방법.루트 폴더 이름을 가져오는 방법은 다음과 같습니다.

var rootFolder = __dirname.split('/').pop();
console.log(rootFolder);

__dirname현재 실행 중인 파일이 들어 있는 디렉터리의 절대 경로를 알려주는 환경 변수입니다.

다음과 같은 간단한 코드로 부모만 가져옵니다.

let parentFolder = __dirname.split('\\').pop();

나의 산출물__dirname

console.log({ path: __dirname, parentDirectory: __dirname.split('\\').pop()});
{ 
path: 'C:\\Development\\Guides\\ParentFolder', 
parentDirectory: 'ParentFolder' 
}

언급URL : https://stackoverflow.com/questions/42956127/get-parent-directory-name-in-node-js

반응형