Bun 中 --watch 的错误

Bug with --watch in Bun

提问人:Lin ku 提问时间:9/22/2023 最后编辑:0xe1λ7rLin ku 更新时间:10/27/2023 访问量:192

问:

我在 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

图像代码

手表 包子

评论

1赞 drum 9/22/2023
你期望它能做什么?
0赞 samnoon 9/23/2023
您应该查看有关包子热重载的官方文档:bun.sh/docs/runtime/hot#hot-mode 和此问题:github.com/oven-sh/bun/issues/1655

答:

0赞 undefined 9/25/2023 #1

在正在使用的 Bun 版本上使用 WSL 的文件系统观察程序可能存在限制或兼容性问题。所以 Id 首先检查一下。

尝试在服务器上运行打字稿文件

  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 文件系统中,即不在装载的 Windows 文件系统下,即 ./home/username/project/mnt/c/Users/username/project

如果你在大型代码库中工作,Bun 可能会尝试查看太多文件。尝试将监视限制为特定目录或文件。

如果上述解决方案都不起作用,您可以考虑在 Bun 的 GitHub 存储库上提出问题。这可能是维护人员没有意识到的 bug,尤其是当它特定于 WSL 环境时。就你而言,鉴于你同时使用了 和 ,问题可能出在 WSL 的文件系统观察程序限制上。--hot--watch

尝试上面提到的解决方案,尤其是与增加 inotify 监视限制相关的解决方案,因为这是 WSL 环境中其他工具类似问题的常见解决方案。