Ошибка сохранения в Windows «подключенного сетевого диска» в Electron - PullRequest
2 голосов
/ 22 февраля 2020

У меня есть приложение Electron в ранней бета-версии, и мы только что получили сообщение о том, что оно неправильно сохраняется в "каталоге DOCUMENTS, который использует перенаправление папок в сетевое расположение" . Пользователь находится в большой ИТ-среде, управляемой ИТ-специалистами.

Я работаю на macOS и использую Windows только в режиме эмуляции для тестирования и устранения неполадок, не связанных с сетью, и я не знаю, как чтобы справиться с этим.

Это приложение типа «инструмент представления», в котором пользователь может «импортировать» (копировать) медиаресурсы в папку проекта, упорядочить их и сохранить эту последовательность для последующего представления. Типичные шаги после запуска пользователем приложения и выбора создания нового проекта:

  1. пользователю предоставляется showSaveDialog для выбора места сохранения проекта. Путь по умолчанию, указанный в параметрах диалога, app.getPath('documents'). Путь, возвращаемый этим диалогом, используется для всех последующих операций копирования и сохранения.
  2. создается папка проекта вместе с несколькими подпапками для типов активов
  3. 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 и экранированными слэшами) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...