震惊! 那些年我们遇到的bug(常更)竟...

174 阅读2分钟

node.js中的错误

1. 引用fs时fs没有加引号:
代码如下:

try {
//可能会出错的代码
  const fs = require(fs)
} catch (err) {
  //如果try内的代码有错误,就会进入catch,并把错误传进来
  console.log('报告,有错误发生')
  console.log(err)
}

当我们nodejs跑起来时会发现直接报错了.如图 : 001.png 解析: 当看到这么一串英文时,相信初学的小伙伴是懵的.不用着急,我们只需要认识一个单词error : 错误 随后,如图所示 :
002.png
如图,很明显的表明了,我们的fs没有初始化.所以应该检查fs相关.

2.自定义模块的调用

代码如下:

  1. 根目录如下:

根目录.png 2. tool代码如下:

  const formatDate = (dateTime) => {
  const date = new Date(dateTime) // 转换成Data();
  let y = date.getFullYear()
  let m = date.getMonth() + 1
  m = m < 10 ? '0' + m : m
  let d = date.getDate()
  d = d < 10 ? ('0' + d) : d
  return [y, m, d].join('-')
}
const sleep = () => {
  console.log('捉到死睡')
}
//导出自定义模块
module.exports = {
  formatDate,
  sleep,
  relativeTime
}
  1. test代码如下:
//导入自定义模块
const res = require('./tool')
// console.log(res)
res.sleep() //捉到死睡
let res1 = res.formatDate(Date.now())
console.log(res1) //2022-04-26 

当nodejs代码跑起来 :
bug11.png
解析 : 为什么会输出NAN-NAN-NAN呢? 这类bug很明显的说明了在调用函数方法时,如果函数有形参,调用的时候必须需要实际参数,所有应该是
let res1 = res.formatDate(Date.now())
console.log(res1) //2022-04-26

3.跨域问题的解决

当代码跑起来出现如下情况 :

001.png 此时,就说明了出现了跨域问题
解决方案:

一、使用CORS

  1. cors是一个npm包,可以直接在npm超市中下载使用
    npm i cros
  2. 使用,当做express的中间键,注意代码应该放在顶部
    var cors = require('cors')
    app.use(cors())

4.对象转字符串

代码如下:

    let obj = {name:张三'}
    console.log(obj) // {name:'张三'}

如果我们输出的结果是:

    console.log('aaa'+obj) //aaa[object Object]
    此时输出的结果为 aaa[object Object] 

那我们的obj对象去哪了?
原因如下:

    + : 字符串的拼接,会将obj对象隐性转化为字符串
    console.log(obj.toString) // '[object Object]'

所以,+不能使用,应该使用逗号隔开

    console.log('aaa',obj) //aaa{name:'张三'}

5、v-for中难以察觉的错误

在vue中script中代码如下:

    export default {
        data() {
        return {
        arr:[{id:1, title:'新闻1'}, {id:2, title: '新闻2'}],
        list:[{id:1,name:'张三'}]
        }}
    }

在template中代码如下:

<div>
<h1>v-for</h1>
<ul>
<li v-for="(item,index) in arr" :key="index">{{item.id}},{{item.title}}</li>
<li v-for="(item,index) in list" :key="index">{{item.id}},{{item.title}}</li>
</ul>
</div>

如此的话,看起来没有一点点问题.但是,运行的话则会显示如下:

cuouw.png

原因 : 因为key只能是在一个循环里的唯一值!!!

解决方案:将key冲突的小li,分别放在两个ul中

<div>
<h1>v-for</h1>
<ul>
<li v-for="(item,index) in arr" :key="index">{{item.id}},{{item.title}}</li>
</ul>
<ul>
<li v-for="(item,index) in list" :key="index">{{item.id}},{{item.title}}</li>
</ul>
</div>

七、在vue的template中一定要有一个根元素. 否则 错误如下图: