写代码过程中,曾经遇到过的错误

1,449 阅读10分钟

一.写入文件内容

image.png image.png 红线框的单词意思是要写入的内容必须是字符串,我们实际写入的是data这个数组,所以报错.

image.png 解决方法:把数组转为json类型的字符串

二.找不到文件目录

image.png

 1.错误原因:readFile.js文件存放在code这个文件夹里面,当我们在code文件夹的上一级目录中运行readFile.js文件时,就会报错

 2.解决方法:找到readFile.js所在的目录,再运行readFile.js文件

三.问题: xxx.foreach is not a function

错误描述: xxx调用了foreach, 但不是一个方法

有问题代码

var arr = [1, 2, 3];

arr.foreach(function (val) {

console.log(val);

})

报错提示

image.png

  • 分析

Uncaught TypeError: arr.foreach is not a function

未捕获到 引用错误: arr.foreach 不是一个方法

说白了, 就是arr对象身上没有foreach方法, 为啥呢?

你打印arr变量, 展开前面小箭头, 你好好看看foreach方法怎么写的 是不是叫forEach

注意了JS这门语言是区分大小写的 就是foreach和forEach不是一个人

  • 解决

arr.forEach

  • 总结: 在遇到 xxx.yyy 不是一个方法, 那就证明这个对象没有这个方法, 打印这个对象先看看 好好合计合计

四.报错: 404 (Not Found)

错误描述: 没有找到你想访问的

  • 有问题代码:
axios({
method: 'get',
url: 'http://123.57.109.30:3006/api/getbooks2',
params: {
id: 1,
bookname: '西游记'
}
}).then(function (res) {
console.log(res)
})
  • 报错图示

image.png

  • 分析: axios.js 不是我的代码啊, 左边有个箭头展开, 下面有个小箭头指向的是你自己的代码引发的错误, 所以发现是axios请求有问题

  • 解决

根据业务, 把url改成正确的后台地址即可

  • 总结:

只要再看到404, 就是你要请求的url地址不对, 具体是哪一个, 根据报错的提示行数即可找到

五.问题: failed to push some refs to 'xxxxx'

错误描述: xxxx地址看你自己的, 跟我的可能不一样, 但是前面错误提示是一样的

  • 报错图示

image.png

  • 分析
error: src refspec master does not match any
错误: master分支里没有任何匹配的东西
error: failed to push some refs to 'gitee.com:itcz_jiaoyu/good122.git'
错误: 推送文件到'地址'的时候失败了
综上所述: 是你本地没有暂存和提交, 没什么可以推送的啊
  • 解决: 先去git add . 和 git commit -m '提示'
  • 总结: 根据英文就知道什么意思啦

六.问题: 网页 Too Many Request

错误描述: 太多请求了,这个问题很常见

  • 报错图示

image.png

  • 分析 Too Many Requests
    太多的请求了 这个网站短时间有太多的请求, 就会拒绝正常逻辑响应

  • 解决 换个网络 / 等1个小时以后再来注册吧

七.报错: xxxx不是内部或外部命令

错误描述: 本机没有这个命令

  • 报错图示

image.png

  • 分析 nodeomon 不是内部或外部命令, 一切的命令都要安装到电脑里, 而且要成功配置到计算机的环境变量里, cmd终端里才能执行这 个命令程序

nodemon 是替代node命令来实时更新js代码运行的效果的, 很明显单词打错了

// 如果单词没错就是环境没安装对, 重新安装即可

  • 解决 nodemon xxxx.js

八.语法报错案例:

image.png

Uncaught SyntaxError ==> 未识别的-语法-错误
翻译:未识别的语法错误: 意想不到的标识符
说明项目中书写格式出错 , 审查代码 VScode或者其他编译器中查找红色波浪线 , 并加以适当的修改 , 直到红色波浪线消失

九.常见错误类型

  • EvalError:eval函数的错误
  • InternalError(非标准):出现在JavaScript引擎内部的错误
  • RangeError:范围错误,当一个值不在其所允许的范围或者集合中
  • ReferenceError:引用错误,当一个不存在的变量被引用时发生的错误
  • SyntaxError:语法错误
  • TypeError:类型错误
  • URIError:URI错误

十.将一个值赋值给一个无法被赋值的对象

image.png

十一. SyntaxError 语法错误

变量名不合规范

image.png

十二.给关键字赋值

image.png

十三.TypeError:"xxx"  不是函数

image.png

十四.关于码云网站的bug

  • 报错 'touch’不是内部或外部命令,也不是可运行的程序或批处理文件 报错截图

image.png

相关代码 touch README.md
问题 使用码云创建仓库后 , 想和本地代码进行同步 . 在 添加 README.md 文件时 报错了
分析问题 touch 是 Linux 环境下的命令 , 不支持我们在 cmd 中使用
解决问题 使用 echo test>README.md 命令代替 touch README.md 命令

解决问题具体操作

image.png

十五.端口号被占用

image.png

8081这个端口号已经有人在用了,所以报错

解决方案:换一个端口号 , 一个IP地址的端口可以有65536个,范围是从[0,65535])。不同的端口被不同的软件占用,以提供不同的服务。

十六.git pull命令无法拉取远程仓库的代码

image.png

从远程仓库拉取下来的代码不能修改 , 如果一不小心修改了其中一个文件的内容 , 将不能拉取代码 , 这个时候我们可以 git checkout . , 然后git status查看文件状态 , 最后git pull拉取代码。

十七.找不到文件

image.png

报错:404

描述:用npm下载包的时候 , 找不到day.js这个包 , 所以报错404 , 很可能是包名写错了 , 正确包名是dayjs。

解决:重新输入正确的包名 , 并且下载这个包

十八.跨域错误

image.png

什么原因导致了浏览器报跨域错误: 发起ajax请求的那个页面的地址 和 ajax接口地址 不在同一个域中

跨域错误:不同源ajax请求====> 报跨域的错误

http://127.0.0.1:5500/message_front/index.html 请求http://localhost:8080/getmsg属于跨域

解决方法: 使用CORS

  CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10(ie8通过XDomainRequest能支持CORS)。

  1. cors , 它是一个npm包,要单独下载使用 npm 包 cors npm i cors

  2. 当做express中的中间件,注意代码应该放在顶部

const cors = require('cors')
app.use(cors())

十九.逗号和加号在JavaScript中的区别还是很大的

如图所示

image.png

声明一个对象obj={a:1} ,

如果控制台打印('接到的参数是' , obj) 得到的结果是 : 接到的参数是{a:1}

如果控制台打印('接到的参数是' + obj) 得到的结果是 : 接到的参数是[object Object]

两种不同的结果显而易见

对象和函数转字符串的结果如下 :

obj.toString()===>'[object Object]'

(function fn(){}).toString()===>'function fn(){}'

二十. post接口-传递json格式的参数有误

image.png

黑窗口出现这种错误,很可能是因为我们传递参数的时候 , 多写了一些标点符号 , 这个时候可以检查一下参数有没有问题。

image.png

经过仔细检查后,发现问题在这个逗号上 , 把它去掉就可以了

二十一.v-for中的key的值是唯一的

image.png

上面的错误,大概意思是key的值不能重复,否则报错,v-for是vue中的一个语法。

image.png

image.png

arr这个数组有一个元素的id是1,list这个数组也有一个元素的id是1,而且两个li标签的目标结构分别是arr和list两个数组,同时两个li标签都是ul的子元素,所以浏览器会报错,因为key的值是唯一的。

解决方法:把目标结构是list数组的li标签放在一个新的ul标签中

image.png

二十二.少了一个空格

image.png

写代码时,经常会遇到这样的错误,那就是少了一个空格,细节决定成败啊!

上面的错误提示我们,in前面少了一个空格

image.png

通过检查源代码,找到了这个bug,马上加一个空格,问题就解决了。

二十三.关于vue单向数据流的错误

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

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

image.png

如果在子组件内部私自修改父组件传递过来的props,就会导致上面截图中的错误,所以要小心一点。

父组件

<template>
  <div style="border: 6px solid blue; margin: 10px">
    <h1>单向数据流-父组件</h1>
    <MyCom :name="name" :hobby="hobby" />
  </div>
</template>

<script>
// 导入;
import MyCom from "./MyCom.vue";
export default {
  data() {
    return {
      name: "张三",
      hobby: ["vue", "react"],
    };
  },
  components: { MyCom },
  methods: {
    fn() {
      this.name = "李四";
      this.hobby.push("jquery");
    },
  },
};
</script>

<style></style>

子组件

image.png

二十四.关于计算属性的错误

image.png

上面的错误,大概的意思是计算的属性"isAll"已经在数据中定义

image.png

v-model="isAll",意思是将变量isAll与input绑定在一起,为了监听复选框的勾选状态

image.png

isAll在这里是一个计算属性,所以不能在data里面作为变量使用。

解决方法:把data整体删除

二十五.使用element-ui时少写了一对引号

image.png

这个错误大概意思是:无效的prop,类型检查失败的prop "closeOnPressEscape",预期想得到一个布尔值,实际上得到的是值为"false"的字符串

image.png

检查代码发现,false外面少了一对引号,加上就可以了,close前面还要加一个冒号。

二十六.关于vuex严格模式的错误

image.png

image.png

吃饭,睡觉,打豆豆是三个复选框,当我们点击复选框的时候,会报上面的错误

strict:true这行代码意思是开启vuex中的严格模式,严格模式下,控制state的修改只能通过mutations来完成,造成上面错误的根本原因就是因为开了严格模式,严格模式一般在modules文件夹里面的index.js文件中设置。

解决方法:关闭严格模式,注释strict:true这行代码

二十七.关于eslint的错误

image.png

开启eslint模式后,可能会出现这个错误

image.png

检查代码发现21~26行有空行,这种情况下,运行代码就会报错

解决方法:删除这些空白行

二十八.关于template的错误

image.png

错误描述:挂载组件失败:模板或渲染函数未定义,简单来说就是少了一对template标签

image.png

template是模板标签,不能少,图中画圈的地方少了一对模板标签,第一行就是模板标签

解决方法: 把template标签补上去

拓展:

template可以显示template标签中的内容,但是查看后台的dom结构不存在template标签。如果template标签不放在vue实例绑定的元素内部默认里面的内容不能显示在页面上,但是查看后台dom结构存在template标签。

注意:  vue实例绑定的元素内部的template标签不支持v-show指令,即v-show="false"对template标签来说不起作用。但是此时的template标签支持v-if、v-else-if、v-else、v-for这些指令。

二十九.关于token的错误

image.png

发生这个错误可能有三个原因:

  • 没有授权
  • 没有token值
  • token失效 拓展:

常见的HTTP响应状态码解析

image.png

image.png