开发工具不会关注 WSL2 中的更改

问题描述 投票:0回答:1

我正在使用应该重建/更新/等的开发工具。当源文件更改时,但在 Windows Subsystem for Linux (WSL2) 中运行该工具时不会发生这种情况。为什么,我能做什么来解决它?


请注意,Stack Overflow 上有许多问题具有相同的根本问题,但每个问题都侧重于不同的开发工具。这是一个规范问题,旨在收集所有工具通用的答案。有一个可以编辑的社区维基答案,或者您可以提供自己的答案。请注意,某些工具可能还有其他特定于工具的答案,这些答案应发布在它们自己的问题上。

特定工具问题的链接:

windows-subsystem-for-linux wsl-2 watch inotify
1个回答
0
投票

核心问题是 WSL2 用于访问 Windows 驱动器的 Plan 9 (9P) 网络文件系统不支持

inotify
API。这会影响
tail
以及许多开发工具中的“热重载”功能(例如
npm watch
)。

这会在 WSL2 中发生:

  • Linux 应用程序正在尝试使用
    inotify
    来监视文件系统更改
  • 该文件位于可从 WSL2 访问的 Windows 驱动器上,例如
    /mnt/c/path/to/project
  • Windows 进程正在修改文件。

正常解决方法:

  • 如果可能,请将文件存储在 Linux 文件系统上(例如,

    ~/src/path/to/project
    )。有时这是可能的,有时则不可能。

  • 如果应用程序支持,请使用轮询代替

    inotify
    。当然,这样做的过程/论据因工具而异。

  • 过去的一个“传统”建议是使用 WSL1(如果它适合您的用例)。然而,由于 WSL1 已经几年没有收到更新,因此越来越难以证明其使用的合理性。尽管如此,它仍然是一种选择。在 WSL1 下,

    inotify
    适用于 Windows 驱动器。

© www.soinside.com 2019 - 2024. All rights reserved.