Mix无法访问它刚刚创建的用于运行Phoenix服务器的目录?

时间:2019-12-03 20:35:01

标签: powershell elixir phoenix-framework mix

我试图根据official guide从Administrator 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”目录所有者设置为具有完全控制权和继承权限的管理员,我的用户(Isaiah Nelson)和“每个人”,但仍然无法运行演示应用程序而没有收到此错误。这是Mix通过Powershell在Windows中创建文件的问题,还是其他Windows文件权限问题?无论哪种方式,我如何解决它都可以运行演示?

1 个答案:

答案 0 :(得分:0)

如果没有理由以管理员身份运行phx应用,则可以递归“获取”项目所在文件夹的所有权。右键单击文件夹,然后依次单击属性>安全>高级(按钮),然后在新窗口中观察顶部的所有者,单击“更改”链接并找到并选择您的用户名。单击“确定”关闭搜索对话框,然后选择“用该对象的可继承权限条目替换所有子对象权限条目”。最后,单击“确定”(或“应用”),然后尝试在没有提升权限的情况下运行应用。

编辑

我发现,在某些情况下,从WSL以及以后的版本(不包含WSL)中编辑代码可以混合使用文件系统上的访问权限,从而导致这种或类似的行为,例如无法将文件夹移动到其他位置。如果是这种情况,那么我建议您决定在WSL或Win中开发环境在哪里。