我一直在开发一个React应用程序,并决定使用Bun作为我的JavaScript运行时,因为它的性能很好。然而,我似乎偶然发现了一个关于React应用程序热重载的问题。
我使用命令bun --watch run dev.tsx启动应用程序,它最初运行得很好。但是,当我对App.js文件(或任何其他文件)进行更改时,这些更改不会实时反映在浏览器中。即使在保存文件后,我也必须手动重启服务器才能看到更改。我希望--watch标志能够支持某种热重新加载,但它似乎没有。
下面是我在终端中运行的程序:
Listening on http://localhost:3000
GET /
GET /index.css
GET /index.js
GET /bunlogo.svg
GET /favicon.ico
GET /manifest.json
GET /logo192.png
我想知道Bun是否内置了对热模块替换(HMR)的支持,或者当我对文件进行更改时,是否有任何解决方案可以在浏览器中启用实时重新加载。
任何帮助或指导将不胜感激。谢谢
3条答案
按热度按时间zqdjd7g91#
使用Bun,您可以使用观看模式:
--watch
,当导入的文件发生变化时,它会硬重启Bun的进程。用途:
官方文档链接:https://bun.sh/docs/runtime/hot#hot-mode
mutmk8jj2#
你可以在bun中使用
--hot
模式或--watch
模式。--watch
模式会在导入的文件发生变化时硬重启Bun的进程。--hot
模式将软重新加载代码(无需重新启动进程)时,导入的文件更改。最好使用bun
--hot
来启用在使用Bun执行代码时的热重载。这与--watch
模式的不同之处在于,Bun不会硬重启整个进程。相反,它检测代码更改并使用新代码更新其内部模块缓存。使用
--hot
模式:**注意:**根据官方文档,这与浏览器中的热重装不同。许多框架都提供了“热重载”体验,在这里你可以编辑和保存你的前端代码(比如说,一个React组件),并在浏览器中看到反映的变化,而无需刷新页面。Bun的
--hot
是这种体验的服务器端等价物。参考:
[0][https://bun.sh/docs/runtime/hot](https://bun.sh/docs/runtime/hot)
3qpi33ja3#
Bun v0.x有一个
bun dev
命令,它具有热重载React的功能,但它在1.0中被删除了。HMR在Issue 833中讨论。
Bun的--hot选项并不像@samnoon在他的回答中所说的那样用于在浏览器上进行热重装,但是无论如何,我们有几种方法可以在浏览器中进行热重装:
1.使用像Vite这样的框架来热重载。(推荐在bun's docs)