开发中一不小心就会中招的小bug

425 阅读3分钟

在写代码时,有一些无意识就触发的bug,下面就简单介绍一下本人在开发中遇到的一些bug:

1.单词写错

单词写错一般是大多数人最常出的bug了,往往有时候因为键盘敲的快而打错一个字母,就使代码运行出现问题,如果使用vscode编译代码的话就可以使用 Code Spell Checker这个插件,能够帮助我们检查单词拼写单词是否出现错误,检查的规则遵循camelCase(驼峰拼写法)。

2.文件路径写错

开发中如果引入一个文件后,运行程序没有反应,这是多半是路径出了问题,尤其是在用js实现页面跳转时,由其是js文件引入到html页面,在js文件上书写的路径需要参照html文件所处路径来引用(以html文件为根目录)。

3.文件格式错误

在nodejs中使用fs.writeFileSync()方法,往文件中添加数据时,如果出现了如下图的报错信息,不要慌,先看报错内容是什么,如果英语不好可以复制报错信息,找个翻译软件翻译一下,如果英语好的话就可以直接从其中了解到,其内容大致是说上传的参数必须是字符串或Buffer类型TypedArray或DataView的实例,此时我们就可以了解到是上传的参数的数据格式不对。

image.png 所以在我们遇到bug时不要慌,先看报错信息,毕竟有报错的bug好解决,难的是出bug了还不报错的那种。

4.字符串拼接问题

image.png
上图中可以看到,用逗号分隔开打印时,可以拿到我们想要的数据,;但是用“+”号连接时,就出现了对象obj的字符串格式,因为“+”号一边有字符串时,另外一边的数据也会被转换为字符串。

image.png

5.webpack打包问题

打包如果出现问题,看报错内容的第二行,里面有报错的详细情况 image.png

6.vue计算属性

image.png 计算属性的完整写方法

computed: {
    "属性名": {
        set(){//对值进行设置
            
        },
        get() {//默认值
            return "值"
        }
    }
}

以上报错是因为只设置了默认的get()
计算属性也是变量, 如果想要直接赋值, 需要使用完整写法=>开启读写模式

7.vue单项流数据

image.png 在vue中需要遵循单向数据流原则

  1. 在父传子的前提下,父组件的数据发生会通知子组件自动更新
  2. 子组件内部,不能直接修改父组件传递过来的props => props是只读的

image.png 特殊说明

说明:父组件传给子组件的是一个对象,子组件修改对象的属性,是不会报错的,对象是引用类型, 互相更新;但不能改变引用地址

8.vue2时间轴层异常

页面刷新,组件无法正常从Vuex中获取数据:

image.png 获取数据为空,控制台报错如下:

image.png

可能原因:ajax为异步执行,在组件内赋值时异步代码还未执行,无法获取数据。

解决方案:

  • 使用第三方插件(vuex-persistedstate),将数据存入本地,在store/index.js文件中配置:
import Vue from 'vue'
import Vuex from 'vuex'
// 1. 导入包
import createPersistedState from 'vuex-persistedstate'

Vue.use(Vuex)

export default new Vuex.Store({
  // 2. 配置为 vuex 的插件
  plugins: [createPersistedState()],
  state: {
    token: ''
  },
  mutations: {
    updateToken(state, newToken) {
      state.token = newToken
    }
  }
})
  • 利用定时器
  methods: {
    initUserForm () {
      setTimeout(() => {
        console.log(this.$store.state.userInfo)
        this.userForm = { ...this.$store.state.userInfo }
      }, 500)
    }
  },
  created () {
    this.initUserForm()
  }