如何解析 node.js 或 io.js 中区分大小写的路径?
How to resolve case-aware paths in node.js or io.js?
虽然 path.resolve (myPath)
将 myPath
解析为 cwd
,但有没有办法使用 fs
(.stat
等)获取区分大小写的路径Windows?
文件系统上的实际路径大小写:
C:\myProjectX\aBc\function.js
将目录更改为 c:\myprojectx,然后在 REPL 中:
process.chdir('c:\MYprojectx\abc')
console.log(process.cwd(), path.resolve('c:\myprojectx\abc'))
打印c:\MYprojectx\abc c:\myprojectx\abc
.
可能类似于 this answer suggests for .NET. Note that the other answer on same thread suggests making win32 API call to SHGetFileInfo stuct, which eventually leads to this solution。
这会在生成具有相对路径的数据时出现问题,这些数据应该是跨平台共享的。
const trueCasePathSync = require('true-case-path')
trueCasePathSync('/users/guest') // OSX: -> '/Users/Guest'
trueCasePathSync('c:\users\all users') // Windows: -> 'c:\Users\All Users'
从 Node 9.2.0 开始,您可以使用 fs.realpath.native()
or fs.realpathSync.native()
const fs = require('fs');
fs.realpathSync.native('c:\users') // Windows10: C:\Users
fs.realpathSync.native('c:\users\all users') // Windows10: C:\ProgramData
虽然 path.resolve (myPath)
将 myPath
解析为 cwd
,但有没有办法使用 fs
(.stat
等)获取区分大小写的路径Windows?
文件系统上的实际路径大小写:
C:\myProjectX\aBc\function.js
将目录更改为 c:\myprojectx,然后在 REPL 中:
process.chdir('c:\MYprojectx\abc')
console.log(process.cwd(), path.resolve('c:\myprojectx\abc'))
打印c:\MYprojectx\abc c:\myprojectx\abc
.
可能类似于 this answer suggests for .NET. Note that the other answer on same thread suggests making win32 API call to SHGetFileInfo stuct, which eventually leads to this solution。
这会在生成具有相对路径的数据时出现问题,这些数据应该是跨平台共享的。
const trueCasePathSync = require('true-case-path')
trueCasePathSync('/users/guest') // OSX: -> '/Users/Guest'
trueCasePathSync('c:\users\all users') // Windows: -> 'c:\Users\All Users'
从 Node 9.2.0 开始,您可以使用 fs.realpath.native()
or fs.realpathSync.native()
const fs = require('fs');
fs.realpathSync.native('c:\users') // Windows10: C:\Users
fs.realpathSync.native('c:\users\all users') // Windows10: C:\ProgramData