IE中遇到的坑(一、在Vue.prototype上声明全局变量)

13 篇文章 0 订阅

IE中使用VUE遇到的坑(一、在Vue.prototype上声明全局变量)


IE中有很多坑,当使用VUE的时候,坑就更多了,经常遇上莫名其妙的问题还看不懂,但是项目必须兼容IE。只能解决后把自己遇到的问题记下来。

1、问题

在这里插入图片描述
项目已经做完了,下午的时候优化了一段代码,开开心心准备下班,顺手刷新了下IE的页面,咦,怎么卡住了,一看IE控制台,报错了,但是谷歌没报啊,好气啊,还不告诉我报错位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、解决过程

我开始怀疑我最新加的一个模块代码,因为今天别的都是改改css样式,只有那里把一些全局常量提出来单独做一个模块。

let config = {
  dev: { //开发环境需要的全局常量或变量
    WEBSOCKET_DEVICE_URL: 'ws://172.16.1.228:8762/websocket/', // 与设备交互信息的websocket前缀
  },

  build: { // 测试环境需要的全局常量或变量
    WEBSOCKET_DEVICE_URL: 'ws://172.161.1.152:8762/websocket/' // 与设备交互信息的websocket前缀
  }
}
export default config;

main.js里面的代码

import CONFIG from './config'

Vue.prototype.myConfig = CONFIG.dev;

调用常量时的代码

websocket = new WebSocket(this.myConfig.CONFIG.WEBSOCKET_DEVICE_URL);
  1. 那就不写模块里好了,直接写到main.js里面去,不行,依然报错。
  2. 调用常量时的代码里的this.myConfig.CONFIG.WEBSOCKET_DEVICE_URL屏蔽,不报错了,于是打印值,发现可以打印出来,但是还是会报错。
  console.log(this.myConfig.WEBSOCKET_DEVICE_URL);
  this.GOLBAL.websocket = new WebSocket(this.myConfig.WEBSOCKET_DEVICE_URL + deviceNumArr.join(','));
  1. 先声明myConfig,并给与属性值,再复制config的属性值给Vue.prototype.myConfig,问题解决(但是这样写的话我就不如直接在Myconfig里里赋值了,复制还多此一举)。
import CONFIG from './config'

Vue.prototype.myConfig = {
 WEBSOCKET_DEVICE_URL: ''
};
Vue.prototype.myConfig.WEBSOCKET_DEVICE_URL = CONFIG.dev.WEBSOCKET_DEVICE_URL;

3、结论

在给Vue.prototype添加新属性的类型为对象时,最好先声明该对象的每一个属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值