使用ng serve时WebStorm无法保存文件

Dam*_*amo 1 windows node.js webstorm windows-subsystem-for-linux angular

当使用ng serve --open --live-reload我的开发机器上的Angular应用程序提供服务,并使用WebStorm更改文件时,WebStorm尝试保存时出现错误“无法保存文件”。

当我在Sublime中编辑文件时,没有任何问题,因此看起来文件没有被锁定ng serve。

开发设置

  • Windows 10主机
    • WebStorm 2017.2.3
    • 崇高文字3 3143
  • 在WSL中运行的Ubuntu
    • ??? @angular/cli@1.4.9 ? ??? @ngtools/webpack@1.7.4 ??? @ngtools/webpack@1.7.4
    • ng serve --open --live-reload

Dam*_*amo 6

它不是服务锁定文件,也不是ubuntu和Windows之间的任何交互。这是Webstorm默认保存文件的方式。

默认情况下,webstorm将使用tmp名称保存文件的副本,删除原始副本,然后将副本重命名为与刚删除的副本相同。看起来此过程(发生得非常快)正在以某种奇怪的方式与ng服务交互,导致文件无法重命名,而留下了有趣的tmp文件。

解决方案是在webstorm设置的“外观和行为”下的“系统设置”中关闭“使用“安全写”(首先将更改保存到临时文件)”。


len*_*ena 5

这是WSL特有的已知问题,请参阅IDEA-173073:此Safe Writes功能无法保留原始文件权限,因此在WSL上运行时会引起问题。解决方法是Use "Safe write"在“ 文件”中禁用| 设置| 外观与行为| 系统设置