我在Windows上使用节点。我执行node folder/app
。
现在我想找到我的应用process.mainModule.filename
的主要文件的名称,并且我确实收到了drive/folder/app.js
。
但我需要收到drive/folder/App.js
因为这是文件的真实姓名。
哪种解决方法最简单?
答案 0 :(得分:1)
没有直接好的方法来确定文件系统是不区分大小写的,并获得跨越所有操作系统的真实路径。
例如,' / proc / self / fd / [fd]'只在linux上。
但是在所有操作系统中都有一种愚蠢的方法。
此处的竞争源代码: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