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 验证
我在使用 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 验证