我正在使用应该重建/更新/等的开发工具。当源文件更改时,但在 Windows Subsystem for Linux (WSL2) 中运行该工具时不会发生这种情况。为什么,我能做什么来解决它?
请注意,Stack Overflow 上有许多问题具有相同的根本问题,但每个问题都侧重于不同的开发工具。这是一个规范问题,旨在收集所有工具通用的答案。有一个可以编辑的社区维基答案,或者您可以提供自己的答案。请注意,某些工具可能还有其他特定于工具的答案,这些答案应发布在它们自己的问题上。
特定工具问题的链接:
nodemon
:如何使 Nodemon 与 WSL 2 配合使用?npm run watch
:npm watch 突然停止在 WSL 上工作tail -f
:如何检查 WSL-2 上不断增长的文件的尾部webpack --watch
:在 Windows 上的 Ubuntu 上的 Bash 中使用 watch 运行 webpack 构建一次并退出核心问题是 WSL2 用于访问 Windows 驱动器的 Plan 9 (9P) 网络文件系统不支持
inotify
API。这会影响 tail
以及许多开发工具中的“热重载”功能(例如 npm watch
)。
这会在 WSL2 中发生:
inotify
来监视文件系统更改/mnt/c/path/to/project
正常解决方法:
如果可能,请将文件存储在 Linux 文件系统上(例如,
~/src/path/to/project
)。有时这是可能的,有时则不可能。
如果应用程序支持,请使用轮询代替
inotify
。当然,这样做的过程/论据因工具而异。
过去的一个“传统”建议是使用 WSL1(如果它适合您的用例)。然而,由于 WSL1 已经几年没有收到更新,因此越来越难以证明其使用的合理性。尽管如此,它仍然是一种选择。在 WSL1 下,
inotify
适用于 Windows 驱动器。