У меня есть приложение Electron в ранней бета-версии, и мы только что получили сообщение о том, что оно неправильно сохраняется в "каталоге DOCUMENTS, который использует перенаправление папок в сетевое расположение" . Пользователь находится в большой ИТ-среде, управляемой ИТ-специалистами.
Я работаю на macOS
и использую Windows
только в режиме эмуляции для тестирования и устранения неполадок, не связанных с сетью, и я не знаю, как чтобы справиться с этим.
Это приложение типа «инструмент представления», в котором пользователь может «импортировать» (копировать) медиаресурсы в папку проекта, упорядочить их и сохранить эту последовательность для последующего представления. Типичные шаги после запуска пользователем приложения и выбора создания нового проекта:
- пользователю предоставляется
showSaveDialog
для выбора места сохранения проекта. Путь по умолчанию, указанный в параметрах диалога, app.getPath('documents')
. Путь, возвращаемый этим диалогом, используется для всех последующих операций копирования и сохранения. - создается папка проекта вместе с несколькими подпапками для типов активов
- a
JSON
file создается на верхнем уровне папки проекта, и, когда пользователь выбирает медиаресурсы на своем жестком диске (используя showOpenDialog
), эти активы копируются в проект
Комментарии пользователя:
Создание проекта не сохраняется при сохранении в каталог windows DOCUMENTS, который использует перенаправление папок в сетевое расположение. Если вы сохраните как, тогда будет создан файл. json. Каталоги активов не создаются при запуске нового проекта в каталоге DOCUMENTS (то есть при использовании перенаправления папок в сетевое расположение).
Сохранение непосредственно на подключенный диск работает как положено.
Я чистил системный диск и нашел место, где приложение хранит файлы , Вместо сохранения в указанном сетевом расположении он генерировал ту же структуру папок на диске root C :. Поэтому вместо того, чтобы файлы сохранялись в \ Server \ Username, они сохранялись в C: \ Server \ username
Это какая-то проблема с app.getPath (Electron) «документы») функция? Единственная манипуляция с этим заданным пользователем путем к проекту - преобразовать его в путь в стиле UNIX
, используя upath , чтобы сделать пути кроссплатформенными совместимыми.
let projectPath = upath.toUnix(directoryPath);
upath.to Unix (путь)
Просто преобразует все `` в / и объединяет дубликаты, без выполнения какой-либо нормализации.
Может ли это убрать критическую часть пути сетевого диска? Возможно, я должен / вместо этого использовать:
upath.normalizeSafe (путь)
Точно так же, как path.normalize (путь) , но он сохраняет первое значение ./.
Обратите внимание, что unix / возвращается везде, поэтому windows \ всегда преобразуется в unix /.
Извините, этот вопрос очень длинный, но кажется, что это странная проблема, и у меня нет простого способа отладить его. Если вы прочитали это далеко, вы видите какие-либо очевидные причины этой проблемы? Я видел этот вопрос ( FileUtils.copyFile () не создает файл, когда местом назначения является сетевой путь (на windows) , возможно, это связано? Я просто сбит с толку всеми слэшами Windows и экранированными слэшами) .