簡體   English   中英

Mix 無法訪問它剛剛創建的用於運行 Phoenix 服務器的目錄?

[英]Mix can't access a directory it just created to run the Phoenix server?

我正在嘗試按照來自管理員 PowerShell 會話的官方指南運行 Phoenix 演示應用程序,在該會話中我是我機器上的管理員。 我已經安裝了所有依賴項,但是當我嘗試運行mix phx.server ,它告訴我它無法刪除文件,因為(它)不是所有者。 使用mix phx.new hello不能完全控制它剛剛創建的這個文件,這似乎很奇怪。 從我的 PowerShell 會話中查看以下輸出:

PS C:\users\Isaiah Nelson\Lab> cd hello
PS C:\users\Isaiah Nelson\Lab\hello> mix ecto.create
Compiling 13 files (.ex)
Generated hello app
The database for Hello.Repo has been created
PS C:\users\Isaiah Nelson\Lab\hello> mix phx.server
** (File.Error) could not remove file "c:/users/Isaiah Nelson/Lab/hello/_build/dev/lib/hello/priv": not owner
    (elixir) lib/file.ex:1128: File.rm!/1
    (mix) lib/mix/utils.ex:452: Mix.Utils.symlink_or_copy/2
    (mix) lib/mix/project.ex:644: Mix.Project.build_structure/2
    (mix) lib/mix/tasks/compile.all.ex:21: Mix.Tasks.Compile.All.run/1
    (mix) lib/mix/task.ex:331: Mix.Task.run_task/3
    (mix) lib/mix/tasks/compile.ex:96: Mix.Tasks.Compile.run/1
    (mix) lib/mix/task.ex:331: Mix.Task.run_task/3
    (mix) lib/mix/tasks/app.start.ex:58: Mix.Tasks.App.Start.run/1

從那以后,我嘗試搜索有關phx.server的 Mix Task 的文檔,但沒有發現為什么會發生這種情況的任何線索。 我什至還嘗試將“hello”目錄所有者設置為管理員、我的用戶(以賽亞·納爾遜)和“所有人”,並具有完全控制和繼承權限,但仍然無法運行演示應用程序而不會出現此錯誤。 這是通過 Powershell 在 Windows 中 Mix 創建文件的問題還是其他一些 Windows 文件權限問題? 無論哪種方式,我如何修復它以便我可以運行演示?

如果沒有理由以管理員身份運行 phx 應用程序,您可以遞歸地“獲取”項目所在文件夾的所有權。 右鍵單擊文件夾,然后屬性 > 安全 > 高級(按鈕),然后在頂部的新窗口中觀察所有者,單擊“更改”鏈接並找到並選擇您的用戶名。 單擊確定關閉搜索對話框,然后選擇“用可從該對象繼承的權限條目替換所有子對象權限條目”。 最后單擊確定(或應用)並嘗試在沒有提升權限的情況下運行應用程序。

編輯

我發現在某些情況下,從 WSL 編輯代碼,然后在沒有 WSL 的情況下編輯代碼可能會在文件系統上混合訪問權限,從而導致這種或類似的行為,例如無法將文件夾移動到不同的位置。 如果這是你的情況,那么我建議你決定你的開發環境在哪里,在 WSL 中還是在 Win 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM