一不小心就会出错的前端bug合集(持续更新......)

313 阅读4分钟

每天都要开心哦!!!

1.Uncaught(捕获不到) ReferenceError(引用错误)

image.png

问题:

        access(访问), initialization(初始化), 未捕获的引用错误, 在初始化之前访问不到”a”.

<script>
    consloe.log(a);
    let a;
    a = 1;
</script>

解决:

    在变量声明的时候就赋值, 先声明在调用; 尽量的使用ES6新增的关键字let, 避免var的变量提升的问题.

2.Write after end (结束了还在执行)

问题:

        因为当if条件成立之后已经res.end了, 已经结束了; 但是这样写下面的res.end(‘hello world’)依然会执行, 那么服务器就会”死”掉.

image.png

image.png

image.png

解决:

    (1) 可以将res.end('hello world')使用else语句包含起来.

    (2) 在if判断条件成立之后, 使用return结束即可. 

3.当前监听的端口已被占用

问题:

        已经有启动了一个终端, 又启动同一个端口的终端.

image.png

image.png

解决:

    将所有的终端全部关闭, 重新启动服务.

4.数据的隐式转换

问题:

        当有 "+" 号的前后有字符串数据类型的话, 那么就会触发隐式转换; 结果输出的是[object object]

image.png

解决:

"+" 变成 "," 号连接即可.

5.当前模块没有被找到

问题:

        使用multer模块, 但是执行的时候, 被告知multer没有被定义.

image.png

image.png 解决:

    使用npm命令下载multer模块, 使用require方法导入即可.

6.变量名没有被定义

问题:

        因为一时疏忽, 将变量名写错.

image.png

image.png 解决:

    找到错误的位置, 将出错的变量名修改正确即可.

7.跨域

问题:

        当前访问的协议和端口号都相同, 但是域名不相同.

image.png

解决:

    (1)给需要的请求加上响应头res.setHeader("Access-Control-Allow-Origin", "*");

    (2)npm i cors包, require应用模块, 变量名.use(cors())即可.

8.传入后端的数据格式不对

问题:

        终端告诉我们找到了一个不知道的符号 " ] " 在JSON中的第48行.

image.png

image.png

解决:

    看完全部的报错信息, 发现下面提示的所有文件中都没有自己写的文件; 所以顺藤摸瓜, 大概率可能是自己传入的数据写错了.

    所以找到传入的参数, 修改正确即可.

​9.response.send方法只能执行一次

问题:

        node编写路由的时候, 当用户调用"/api/getBooks"接口的时候, 会触发后面的回调; 但是send方法被执行了多次, 导致报错.

//编写路由
app.get('/api/getBooks', (req, res) => {
  console.log('当前的参数是', req.query);
  //对象的结构赋值
  let { id } = req.query;
  //变量接收数据
  const obj = {
    "status": 200,
    "msg": "获取图书列表成功",
    "data": [
      {
        "id": 1,
        "bookname": "西游记",
        "author": "吴承恩",
        "publisher": "北京图书出版社"
      },
      {
        "id": 2,
        "bookname": "红楼梦",
        "author": "曹雪芹",
        "publisher": "上海图书出版社"
      },
      {
        "id": 3,
        "bookname": "三国演义",
        "author": "罗贯中",
        "publisher": "北京图书出版社"
      }
    ]
  };
  //错误的写法:
  //只要当前的id值符合条件, 就会输出一次send
  // obj.data.findIndex(item => {
  //   if (item.id == id) {
  //     res.send(item);
  //   } else {
  //     res.send(obj);
  //   }
  // });
  
  
  //正确的写法:
  //遍历数据, 查找符合的id值
  const index = obj.data.findIndex(item => item.id == id);
  //如果能找到就返回下标值对应的数据
  if (index > -1) return res.send(obj.data[index]);
  //否则返回全部的数据
  res.send(obj.data);

image.png 解决:

    使用上述的正确写法, 方法有很多, 只是其中的一种.

10.后端的数据不是字符串类型

问题

image.png

image.png

解决:

    它的提示是:'捕获不到的语法错误, 不明白的标识符'
    要记得, 后端传回来的数据一定要是字符串的格式, 正确方法之一如下:
    
//定义路由
   app.get('/getJSONP', (req, res)) => {
       const data = JSON.stringify({arr: [112, 456], age: 20});
       res.send(`fn(${data})`);
   }

11.后端的代码问题

image.png

image.png

image.png

解决:

    它报错的问题是说fn这个函数没有被定义, 所以我们就找此fn有没有被定义; 但是后端的数据最好是一个字符串的形式.
res.send(`fn(data)`);

12.函数的返回值问题, 无法调用then方法

问题

image.png

image.png 解决:

它的报错信息就是undefined无法调用then方法. 所以当我们在调用函数的时候, 一定要关注函数的参数,返回值和作用.
function sleep(time) {
      const p = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve();
        }, time);
      })
      return p;
    }
    sleep(2000).then(() => {
      console.log('后续操作');
    });
    console.log(2);

13.webpack配置文件属性名写错

问题

image.png

image.png

解决:

问题就是配置文件的属性应该是output, 但是却写成了outout了. 配置文件属性名是一个都不能写错的, 写错就会报错.

image.png

14.vue中template中出现data以外的属性

问题

image.png

image.png

image.png

解决:

      删除或者在data中定义一下就可以了.

15.vue中属性用法错误

问题

image.png

image.png

解决:

    因为在插值表达式中使用data中的数据, 这种写法已经被废除了; 建议使用v-bind指令.
    <img v-bind:src = "imgUrl" alt = ""> 或者 <img :src = "imgUrl">


16.v-for中key值重复

问题

image.png

image.png

解决:

    既然使用框架, 就必须遵守规则; 要求是key值是不可以重复的, 所以想办法设置一个不重复的即可.
    
    
    

17.vue中template没有设置根元素

问题

image.png

image.png

解决:

    要么删除span, 要么加上根元素包裹起来.

18.同一个ul中使用v-for在两个li中使用, 出现相同的key值

问题

image.png

image.png

image.png

解决:

    报错信息提示到, 有相同的key出现; "1"这个key值重复了.
    虽然是两个li互不干扰, 但是实在同一个ul中; 并且id值有相同的部分, 所以报错.
   
    我们就可以把两个li拆开, 再使用另外一个ul将下面的li包裹, 就不会出错了.

19.在v-for中定义了一个变量, 但是没有使用

问题

image.png

解决:

    这个错误不属于语法层面的报错, 只是vue框架觉得你定义了变量就必须使用; 用一下就可以了.

20.vue计算属性没有设置set()方法的情况下, 修改了计算属性

问题

image.png

image.png

解决:

    使用计算属性的完整写法, 设置set()方法.

21.vue中父传子props中属性名写错

问题

image.png

image.png

image.png

解决:

    浏览器报错的信息是"你忘记传入必传属性 "obj"
    然后就可以根据报错核实一下, 可能会报错的地方

22.vue中props校验时, type类型出错

问题

image.png

image.png

解决:

    报错信息是 "类型检测失败, 希望得到的是一个数组, 但是实际得到的是一个对象"
    根据报错的地方修改type属性值

23.vue中, 视图更新陷入无限循环, 发出警告

问题

image.png

image.png

解决:

    报错信息说 "在组件渲染函数中,你可能会有一个无限更新循环"
    因为每次保存一次都会执行一次reverse, 数据更新视图也会更新; 一直这样就陷入一个无限循环

24.vue中一个属性在data中出现了, computed中又出现了

问题

image.png

image.png

解决:

    报错提示是 "isAll已经在计算属性中被定义了"
    所以去掉data中的isAll即可.
    

25.vuex配置项中的方法名和组件调用中时不不一样

问题

image.png

image.png

image.png

解决:

    报错信息是, mutation中没有 "modName111"这个方法名

26.vuex中key值重复

问题

image.png

image.png

image.png

解决

    报错信息是 "getter中的totalBooksprice重复了"
    可以在modules配置项中设置namespaced: true

点个赞吧, 我滴宝, 啾咪!!!

3.webp