我在bun中运行--watch时遇到一些问题,它没有实时更新我的页面,我总是必须重新运行它才能看到更改。
我认为这是因为我在Windows上使用Linux,但我不知道这是否只是我的一个错误,因为我没有在任何地方找到它。 有线索吗?
以我的代码为例:
import { serve } from "bun";
console.log("I restarted at:", Date.now());
serve({
port: 4003,
fetch(request) {
return new Response("Susdsdp");
},
});
终端:
我重新启动:1695345688409
只给我发一次这条消息,有人帮助我😭
我已经用过 --hot 和 --watch
在您正在使用的 Bun 版本上使用 WSL 的文件系统观察程序可能存在限制或兼容性问题。所以我先检查一下。
尝试在服务器上运行打字稿文件
Bun.version; // => "0.6.15"
Bun.revision; // => "49231b2cb9aa48497ab966fc0bb6b742dacc4994"
如果需要,请更新发髻
npm install bun@latest
。
检查您的文件路径和名称是否不包含可能干扰 Bun 的文件监视功能的特殊字符。另请记住,使用 WSL 时 Linux 文件系统事件并不总是正确传播。这可能会影响依赖文件系统观察器的工具,例如 Bun。 因此,您可能想尝试通过以下方式增加 WSL 中的 inotify 监视限制:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
然后,确保 Bun 具有监视文件和目录所需的权限,同时确保您的项目目录位于 WSL 文件系统(即
/home/username/project
)内,而不位于已安装的 Windows 文件系统(即 /mnt/c/Users/username/project
)下。
如果您正在处理大型代码库,Bun 可能会尝试查看太多文件。尝试将监视限制为特定目录或文件。
如果以上解决方案都不起作用,您可以考虑在 Bun 的 GitHub 存储库上提出问题。这可能是维护人员没有意识到的错误,尤其是特定于 WSL 环境的错误。就您而言,鉴于您同时使用了
--hot
和 --watch
,问题很可能在于 WSL 的文件系统观察程序限制。
尝试上述解决方案,尤其是与增加 inotify 监视限制相关的解决方案,因为这是 WSL 环境中其他工具类似问题的常见解决方案。