Эликсир Феникс и Симлинкс на Windows SMB Drive - PullRequest
2 голосов
/ 09 апреля 2020

Так что у меня есть интересная проблема, которую я просто не могу понять, почему я получаю это и что делать.

Таким образом, в основном я храню все свои проекты разработки на моем Synology NAS для локального доступа между мои различные устройства. С этим никогда не было проблем, пока я не начал играть с Elixir и, что более важно, с Phoenix. Проблема, которую я получаю, это когда я запускаю mix phx.server. Я получаю следующее

[warn] Phoenix is unable to create symlinks. Phoenix' code reloader will run considerably faster if symlinks are allowed. On Windows, the lack of symlinks may even cause empty assets to be served. Luckily, you can address this issue by starting your Windows terminal at least once with "Run as Administrator" and then running your Phoenix application.
[info] Running DiscussWeb.Endpoint with cowboy 2.7.0 at 0.0.0.0:4000 (http)
[error] Could not start node watcher because script "z:/elHP/assets/node_modules/webpack/bin/webpack.js" does not exist. Your Phoenix application is still running, however assets won't be compiled. You may fix this by running "cd assets && npm install".
[info] Access DiscussWeb.Endpoint at http://localhost:4000

Поэтому я попытался, как было сказано, и запустил его в CMD как администратор, но безрезультатно. После некоторой дальнейшей проверки я попытался создать символические ссылки вручную, но каждый раз, когда я пытался, я получал ошибку Access is denied. (да, это повышенный CMD).

c:\> mklink "z:\elHP\deps\phoenix" "z:\elHP\assets\node_modules\phoenix"
Access is denied.

Так что я считаю, что это как-то связано с тем фактом, что символические ссылки пытаются создать на NAS, потому что, если я перенесу проект и размещу его локально, он будет работать. Теперь я знаю, о чем ты думаешь. Да, я мог бы просто хранить их локально на моем P C, но мне бы хотелось, чтобы они были доступны между ПК без необходимости передавать файлы или полагаться на git et c. (т. е. автономный доступ), не говоря уже о том, что на NAS предусмотрена процедура полного резервного копирования.

Что я пробовал:

  • Настройка гостевого доступа на чтение и запись на общем ресурсе SMB
  • Добавление в /etc/samba/smb.conf на моем NAS-устройстве Synology:
    [global]
    unix extensions = no

    [share]
    follow symlinks = yes
    wide links = yes
  • Дополнительная регистрация в SMB для просмотра того, что происходит, когда я пытаюсь это сделать (ничего не регистрируется )
  • Создание символьной c ссылки из моего MA C (работает)
  • Настройка всех fsutil behavior query SymlinkEvaluation на включенные

На данный момент я я застрял и не уверен, что попробовать дальше, или даже если это возможно. Учитывая только использование NFS, но столкнусь ли я с теми же проблемами с SMB?

PS Я столкнулся с аналогичной проблемой с Python venvs некоторое время go, просто ошибка Access is denied. и просто сдался и переместил только venv локально и сохранил основную часть кода на NAS. (На самом деле это оказалось лучшим решением для этого, потому что среда каждого устройства в моей сети конфликтовала и т. Д. c.)

Любые идеи очень ценятся.

...