问题一: Cannot read property 'forEach' of undefined
错误描述: undefined不能读取属性forEach
- 有问题代码:
let arr = res.date;
arr.forEach(function (obj) {
let { id, publisher, author, bookname } = obj;
let theTr = `
<tr>
<td>${id}</td>
<td>${bookname}</td>
<td>${author}</td>
<td>${publisher}</td>
<td>
<a href="javascript:;" class="del">删除</a>
</td>
</tr>`;
$("#tb").prepend(theTr);
})
错误分析: 在第80行有问题, 查看报错的代码 是arr读取的forEach方法, 报错说arr是个undefined(说明arr变量里的值是undefined) 顺藤摸瓜: 那么观察arr的值是在上面res.date给的 那打印res观察 (很关键, 一定要学会打印) 发现res的数据在data属性上, 而非date. 发现是拼写错误
- 解决:let arr=res.data
总结: 当发现问题后, 要学会顺腾摸瓜, 变量只是个代号, 而变量里装的什么只有打印出来才知道
问题二: 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)
})
示图
- 错误分析:路径不对
总结: 只要再看到404, 就是你要请求的url地址不对, 具体是哪一个, 根据报错的提示行数即可找到
问题三:promise的返回值(报错情况)
- 当构造器没有参数时 报错:
Promise resolver undefined is not a function - 错误分析:promise的resolve方法不是一个方法
- 问题代码
const p1 = new Promise(){
// 执行异步代码
// 调用resolve,或者reject
});
console.dir(p1)
总结:promise要传参,这个参数是一个回调函数
- 当promise对象的状态是rejected,且此时then方法并没有设置第二个参数,就会向外抛出一个错误.报错:
Uncaught (in promise) - 错误分析: 没有要执行的代码
- 问题代码
var p = new Promise((resolve,reject)=>{
reject(val2)
})
p.then(
okVal=>{
console.info("成功");
console.log(okValue);
})
总结:在实现开发尽量使用fn().then().catch()这种,避免上述问题
问题四:webpack设置入口文件
- 当设置了入口文件时,但写node命令时,加了文件夹名 报错:Unknown command or entry...
- 错误分析:执行命令错误 npx webpack ./文件名
- 解决问题:npx webpack
总结:当修改出入口文件时,执行命令npx webpack
- 当设置入口文件时,开错了小黑窗 报错:Module not found:Error:Can't resolve './src' in...
- 错误分析:这个模块找不到 在'./src' 里面不能决定...
- 解决问题:在node小黑窗里cd ..到跟路径
总结:在执行node命令前,先看清楚小黑窗打开的路径
问题五:命令输错了
- 操作小黑窗命令输错了 报错:Run vue --help...
- 错误分析:命令输错了不知道run什么代码 vue run serve
- 解决问题:不要慌,,仔细看报错代码,,命令已经给你了
总结:报错冷静分析报错代码
问题六:监听器-没有setter
- 在操作数据代理时,修改了vm所代理的计算属性值
- 错误分析:使用的是普通方法,只是执行getter(get函数) 报错: ...no setter
- 解决问题:使用全写方法
computed:{
属性名:{
get(){
return 读取执行的代码 },
set(val){
return 修改执行的代码 }
}
}
总结:以后直接使用全写方法
问题7:没有出现效果
- 错误分析:在操作时没有设置接收的命令
- 解决问题:加上红色框里的代码
当操作input时,不要忘记需要v_model接收 (双向绑定)
问题8:$nextTick相关问题
- 错误分析:因为数据改变后,获取不到异步代码 报错:this.$nextTick是undefined
- 解决问题:
this.$nextTick(()=>{
this.$refs.inp.focus()
})