vite、vue3本地页面正常显示不刷新,外网穿透后页面不停刷新

明明本地不会刷新,但映射到外网就会不停刷新页面。

在这里插入图片描述
百度了一篇CSDN文章:vite项目 通过外网域名访问 无限刷新 的解决办法,没有解决我的问题。

我使用的是natapp进行外网穿透。
报错信息是:WebSocket connection to 'ws://xxx.natappfree.cc:3000' failed:
在natapp 的外网穿透配置中,映射的本地host和端口是:127.0.0.1:3000
请添加图片描述
根据natapp应用的映射信息:
请添加图片描述
natapp 提供的地址,http://xxx.natappfree.cc 内已经包含了 3000 端口,而报错信息是WebSocket connection to 'ws://xxx.natappfree.cc:3000' failed:,也就是说,我们访问的地址其实是:127.0.0.1:3000:3000,页面不能正常访问导致不断刷新。

解决办法:
node_modules\vite\dist\client\client.js 中搜索 new Websocket,搜索到下图信息:
请添加图片描述
手动删除 :${__HMR_PORT__} 后,通过外网穿透地址去访问就没有不停刷新页面了。

注意:这种修改仅有临时效果,不能一劳永逸!

如果遇上下面这种情况:
删除:${__HMR_PORT__}后,手机端倒是不刷新了,但是浏览器本地开始一直刷新。
可能是以下原因:
浏览器本地用的是穿透后的地址(比如: http://xxx.natappfree.cc/)。删除 :${__HMR_PORT__}的原因是:内网穿透的地址 http://xxx.natappfree.cc/ 本身就带了3000的端口。如果本地浏览器用localhost访问,在删掉了:${__HMR_PORT__}后缺少了暴露的端口,就会因为端口错误不停刷新。
可以试试把项目的 port 改成80(http是80,https是443), 网页链接的端口也映射为80,这样就不用删掉 :${__HMR_PORT__},用http://xxx.natappfree.cc/访问。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
Vue 3 + Vite + Element Plus中,要实现页面刷新时保留数据,可以借助浏览器的Cookie来存储数据。下面是一个简单的实现步骤: 1. 安装cookie库:在项目中使用`npm`或`yarn`安装`js-cookie`库。 ```bash npm install js-cookie 或 yarn add js-cookie ``` 2. 创建一个`utils`文件夹,然后在该文件夹下创建一个名为`cookie.js`的文件。 3. 在`cookie.js`文件中,引入`js-cookie`库,并创建以下两个方法: ```javascript import Cookies from 'js-cookie'; // 存储数据到Cookie export function setCookie(key, value) { Cookies.set(key, value); } // 从Cookie中读取数据 export function getCookie(key) { return Cookies.get(key); } ``` 4. 在需要保留数据的组件中,例如`Home.vue`,使用`setCookie`方法将数据存储到Cookie中。 ```javascript import { setCookie } from '@/utils/cookie'; export default { mounted() { // 假设要保存的数据是一个对象 const data = { name: 'John', age: 25 }; // 存储数据到Cookie setCookie('data', JSON.stringify(data)); }, }; ``` 5. 在需要恢复数据的组件中,例如`Profile.vue`,使用`getCookie`方法从Cookie中读取数据。 ```javascript import { getCookie } from '@/utils/cookie'; export default { data() { return { data: null, }; }, mounted() { // 从Cookie中读取数据 const cookieData = getCookie('data'); if (cookieData) { this.data = JSON.parse(cookieData); } }, }; ``` 通过上述步骤,你可以在刷新页面后仍然保留数据。当需要存储数据时,使用`setCookie`方法将数据存储到Cookie中;当需要恢复数据时,使用`getCookie`方法从Cookie中读取数据。请注意,Cookie的大小是有限制的,如果存储的数据量较大,可能会超过Cookie的大小限制。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值