Vite.js (Vue):不需要的页面重新加载只发生在 Samsung Internet 上

Vite.js (Vue): Unwanted Page Reload Happens Only On Samsung Internet

我在使用 Vite.js 时遇到了一个奇怪的问题,它只发生在 Samsung Internet 上,当我在开发服务器上时...

问题:页面在循环中自动重新加载 3 秒,我没有设置也没有写任何间隔...页面重新加载发生在浏览器级别。

这些是不需要的重新加载,我想摆脱它们。

知道为什么会这样吗?

编辑为答案:

好的,我仔细研究了这个问题并找到了一些可能的解决方案。

Samsung Internet(与 Chrome 相同)不允许不安全的 websocket (ws) 连接到本地主机(仅 wss,因此您应该为本地 web/websocket 服务器设置 TLS 证书)。但是同样适用于 Firefox。

此错误的另一个原因可能是“超载”了同一端口。也许其他应用程序(您是 运行)使用端口 3000。解决方案是停止该进程或再次更改端口。

测试解决方案:这样做代码是否有效?

// Original line
new WebSocket(`${socketProtocol}://${socketHost}`, 'vite-hmr')


// Replace with exact url with port that you are running the app
new WebSocket("ws://localhost:3000")

好像Samsung Internet browser disallows insecure websockets.

解决方法是使用 server.https 在 Vite 中启用 HTTPS,以便创建安全的 Websocket:

// vite.config.js
import { defineConfig } from 'vite'

export default defineConfig({
  ⋮
  server: {
    https: true,
  }
})

已通过 Vite 2.7.13 和 Samsung Internet 16.0.6.23 验证