2014-12-04 1 views
0

Windows에서 노드로 작업합니다. node folder/app을 실행합니다.실제 파일 이름 가져 오기 (대소 문자 구분)

이제 내 응용 프로그램의 주 파일 이름을 찾으려고합니다. process.mainModule.filename 정확히 drive/folder/app.js을받습니다.

하지만이 파일의 실제 이름이기 때문에 drive/folder/App.js을 받아야합니다.

이 문제를 해결하는 가장 간단한 방법은 무엇입니까?

+3

창은 늘 중요하므로 대소 문자를 구분합니다. 다른 어떤 Os에서는 정확한 이름을 얻을 수있다 –

+0

나는 왜 당신이 소문자 버전을 실행하고 있는지 혼란 스럽다. 대문자를 실행하면 odes는 소문자로도 해석합니까? – loganfsmyth

+0

@loganfsmyth, 아니요, 대문자를 실행하면 정상적으로 작동합니다. – 3y3

답변

0

파일 시스템을 결정하는 직접적인 좋은 방법은 대소 문자를 구별하지 않으며 모든 OS에서 실제 경로를 얻는 것이 아닙니다.

예 : '/ proc/self/fd/[fd]'는 Linux에서만 사용 가능합니다.

그러나 모든 OS에서이를 수행하는 어리석은 방법이 있습니다. 여기

compelete 소스 코드 : https://gist.github.com/snowyu/bdc39a93d25503333991

다음 커피 스크립트 코드는 단지 원칙 보여주는 것입니다 :

folderIsInsensitive = (aFolder)-> 
    t = tmp.fileSync template:'./_tmp-XXXXXXXXX' 
    result = fs.existsSync t.name.toUpperCase() 
    t.removeCallback() 
    return result 

getRealPathForInsensitive = (aPath)-> 
    result = '' 
    while aPath and aPath != path.sep 
    basename = path.basename(aPath).toLowerCase() 
    aPath = path.dirname aPath 
    dirs = fs.readdirSync aPath 
    for dir in dirs 
     if dir.toLowerCase() is basename 
     result = path.join dir, result 
     break 
    return result