我有一个相当大的Vue 3应用程序(~550组件)。运行vue-cli-service serve只需2分钟,每次更改后大约要20秒才能重新构建它。热重新加载很久以前就停止工作了,所以它总是需要在浏览器中被刷新,即使是在一个小的样式改变之后。此外,这个应用程序还没有完成,明年它可能会增加2-3倍,所以它可能会更糟。
由于这些问题,我决定将它从Vue CLI迁移到Vite。我已经解决了很多问题,这个应用程序现在似乎与Vite一起工作,而且加载时间要好得多。
但是,当我启动一个dev服务器(vite命令)并在浏览器中打开它时,它有时会被卡住。页面继续加载,我可以在Chrome DevTools的“网络”选项卡中看到许多挂起的请求。vite --debug的输出没有什么特别之处,运行vite --force也无济于事。

当出现这个问题时,浏览器总是会加载大量的模块(~900),然后就会卡在10-20个模块上。所有这些HTTP请求的状态都是简单的Pending,它们永远不会完成。浏览器或命令行中没有错误。
我不认为任何特定的文件会导致这种情况。也许问题是在我的深嵌套文件夹结构中,在每个级别上使用index.ts文件进行大量再导出。它主要被困在我自己的模块上,但我也看到了它等待某个外部库模块的情况。
有没有人遇到过类似的问题?你是怎么解决的?
编辑:我发现这个问题只发生在基于Chrome的浏览器中(Google,Brave等)在Linux上。它在MacOS和Windows以及其他浏览器(火狐、GNOME等)上运行时没有任何问题。在Linux上。
发布于 2021-10-22 08:12:24
多亏了这句话,我才意识到这是文件描述符限制的问题。
在Manjaro (基于Arch的)上,我能够通过在/etc/systemd/system.conf和/etc/systemd/user.conf文件中添加以下行来解决这个问题:
DefaultLimitNOFILE=65536在进行此更改之后,Vite在所有浏览器中都可以正常工作,没有任何问题。
https://stackoverflow.com/questions/69481783
复制相似问题