Как разрешить регистрозависимые пути в 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 
Другие вопросы по тегам