Как разрешить регистрозависимые пути в node.js или io.js?
В то время как path.resolve (myPath)
сборник законов myPath
против cwd
Есть ли способ получить путь с учетом регистра, используя fs
(.stat
и т.д.) для Windows?
Фактический путь к файлу в файловой системе:
C:\\myProjectX\\aBc\\function.js
измените dir на c:\myprojectx, затем в REPL:
process.chdir('c:\\MYprojectx\\abc')
console.log(process.cwd(), path.resolve('c:\\myprojectx\\abc'))
Печатьc:\\MYprojectx\\abc c:\\myprojectx\\abc
,
Вероятно, что-то вроде того, что предлагает этот ответ для.NET. Обратите внимание, что другой ответ в том же потоке предлагает сделать Win32 API-вызов для SHGetFileInfo Stuct, что в конечном итоге приводит к этому решению.
Это создает проблему при генерации данных с относительными путями, которые должны быть общими для разных платформ.
1 ответ
Решение
Использовать true-case-path
const trueCasePathSync = require('true-case-path')
trueCasePathSync('/users/guest') // OSX: -> '/Users/Guest'
trueCasePathSync('c:\\users\\all users') // Windows: -> 'c:\Users\All Users'
С узла 9.2.0 вы можете использовать fs.realpath.native()
или 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