WSL 2,React 不重新加载文件更改?

jul*_* oh 11 wsl-2

我最近安装了 WSL 2,但是当我使用 create-react-app 创建应用程序并使用 npm start 时,当我编辑某些文件时,该应用程序不会重新加载。我错过了什么吗?

Not*_*1ds 16

根据我的经验,当您的源位于 Windows 驱动器(例如/mnt/c)上时,就会发生这种情况,因为 WSL 用于这些驱动器的驱动程序尚不支持 inotify。有关相关问题的更多详细信息,请参阅此答案。

至少有两种可能的解决方案:

  • 如果您需要 WSL2,建议的解决方案是将文件放置在 WSL 的 ext4 根文件系统上。例如,例如下面的某处/home/。这具有比 Windows 驱动器快得多的额外优势。

  • 或者,您可以将实例转换为 WSL1,它支持Windows 驱动器上的 inotify,并且在处理文件时速度要快得多。如果需要,您还可以保留 WSL1 和 WSL2 副本。它们都有不同的用途,但对于大多数 React/web 开发,我认为您会发现 WSL1 更适合。

    您可以使用 备份现有的发行版wsl --export <distroname> <filename.tar>,然后使用 更改为 WSL1 wsl --set-version <distroname> 1。或者您可以将备份重新导入为wsl --import <newDistroName> <directory> <filename.tar> --version 1.

  • 另外,在我对其他答案的测试中,当运行 VSCode 并在 VSCode 终端中运行观察程序时,它似乎对我有用。我仍然怀疑这是某种“误报”,但你可能想尝试一下。


Wes*_*eek 9

因为react-scripts 5.x.x您可以将WATCHPACK_POLLING=true文件放在.env项目的根目录中来解决这个问题。请参阅此问题线程