wsl-2 - WSL 2,React 不通过文件更改重新加载?
问题描述
我最近安装了 WSL 2,但是当我使用 create-react-app 创建应用程序并使用 npm start 时,当我编辑某些文件时,该应用程序不会重新加载。我错过了什么吗?
解决方案
根据我的经验,当您的源位于 Windows 驱动器(例如/mnt/c
)上时会发生这种情况,因为 WSL 用于这些驱动器的驱动程序尚不支持 inotify。有关相关问题的更多详细信息,请参阅此答案。
至少有两种可能的解决方案:
如果您需要 WSL2,推荐的解决方案是将文件放在 WSL 的 ext4 根文件系统上。例如,在某处
/home/
。这具有比 Windows 驱动器快得多的额外优势。或者,您可以将您的实例转换为 WSL1,它确实支持 Windows 驱动器上的 inotify,并且在处理那里的文件时要快得多。如果需要,您还可以保留 WSL1 和 WSL2 副本。它们都有不同的用途,但对于大多数 React/Web 开发,我认为你会发现 WSL1 更合适。
您可以使用 备份现有发行版
wsl --export <distroname> <filename.tar>
,然后使用 更改为 WSL1wsl --set-version <distroname> 1
。或者您可以将备份重新导入为wsl --import <newDistroName> <directory> <filename.tar> --version 1
.此外,在我对其他答案的测试中,当运行 VSCode 并在 VSCode 终端中运行观察程序时,它似乎对我有用。我仍然怀疑这是某种“误报”,但您可能想试一试。
推荐阅读
- c# - SQL 如何替换一个值
- python - 使用 python 和请求,如何进行正确的 POST 调用以及在哪里找到标头?
- android - FirebaseAppDistribution:appDistributionUpload gradle 命令中缺少应用程序 ID
- mysql - 跨列和行计算值的实例
- javascript - 使用 redux 钩子时使用 redux 操作的最佳选择是什么?
- sql - Impala 2.11:AnalysisException:选择列表中不支持子查询
- swift - 在 SwiftUI 中获取当前的经纬度
- c++ - 是否可以禁止一个类被动态转换为?
- git - Git - 将发布分支合并到主分支
- tensorflow - 任何想法如何解决激活函数的问题?