Vue warn

Cannot find element

错误 1.1

报错信息:

[Vue warn]: Cannot find element: #qpp
warn @ vue.js:634

错误代码:

<div id="app">
    <input type="text" v-model="msg">
    <button @click="query">查询</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#qpp',
        data: {
            msg: '',
        }
    })

错误原因:

代码输入有误,元素名应该是 app,写成了 qpp。

解决方法:

把 qpp 改回 app:

<div id="app">
    <input type="text" v-model="msg">
    <button @click="query">查询</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            msg: '',
        }
    })

错误 1.2

报错信息:

[Vue warn]: Cannot find element: #app
warn @ vue.js:634

错误代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
</head>
<body>
<div id="box">
    <button @click="num++">+</button>
    <input type="number" v-model="num">
    <button @click="sub">-</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data () {
            return {
                num: 5,
            }
        },
        methods: {
            set_zero(){
                this.num = 0
            },
            sub(){
                this.num = this.num<=1?0:this.num--
            }
        }
    })
</script>
</html>

错误原因:

代码输入有误,元素名应该是 box,习惯性写成了 app。

解决方法:

把 app 改为 box:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
</head>
<body>
<div id="box">
    <button @click="num++">+</button>
    <input type="number" v-model="num">
    <button @click="sub">-</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#box',
        data () {
            return {
                num: 5,
            }
        },
        methods: {
            set_zero(){
                this.num = 0
            },
            sub(){
                this.num = this.num<=1?0:this.num--
            }
        }
    })
</script>
</html>

Property or method “query” is not defined on the instance but referenced during render.

错误 2.1

报错信息:

[Vue warn]: Property or method "query" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.

(found in <Root>)
warn @ vue.js:634
warnNonPresent @ vue.js:2047
has @ vue.js:2092
eval @ VM332:3
Vue._render @ vue.js:3545
updateComponent @ vue.js:4061
get @ vue.js:4472
Watcher @ vue.js:4461
mountComponent @ vue.js:4068
Vue.$mount @ vue.js:9038
Vue.$mount @ vue.js:11923
Vue._init @ vue.js:5006
Vue @ vue.js:5072
(anonymous) @ 01corstest.html?_ijt=ctqipqp7hrjsei9g4g47lt3gu3:16

错误代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>
<body>
<div id="app">
    <input type="text" v-model="msg">
    <button @click="query">查询</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            msg: '',
        },
        method: {
            query(){
                axios.post('http://tingapi.ting.baidu.com/v1/restserver/ting?', {
                    params: {
                        method: 'baidu.ting.search.catalogSug',
                        query: this.msg,
                    }
                }).then(response=>{
                    console.log(response);
                    console.log(response.data);
                }).catch(error => {
                    console.log(error);
                })
            }
        }
    })
</script>
</html>

错误原因:

代码输入有误,元素名应该是 methods,写成了 method。

解决方法:

把 method 改回 methods:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/vue.js"></script>
    <script src="js/axios.js"></script>
</head>
<body>
<div id="app">
    <input type="text" v-model="msg">
    <button @click="query">查询</button>
</div>
</body>
<script>
    let vm = new Vue({
        el: '#app',
        data: {
            msg: '',
        },
        methods: {
            query(){
                axios.post('http://tingapi.ting.baidu.com/v1/restserver/ting?', {
                    params: {
                        method: 'baidu.ting.search.catalogSug',
                        query: this.msg,
                    }
                }).then(response=>{
                    console.log(response);
                    console.log(response.data);
                }).catch(error => {
                    console.log(error);
                })
            }
        }
    })
</script>
</html>

Error in v-on handler

错误 3.1

报错信息:

vue.esm.js?efeb:628 [Vue warn]: Error in v-on handler: "ReferenceError: msg is not defined"

found in

---> <SearchBox> at src/components/SearchBox.vue
       <App> at src/App.vue
         <Root>

错误代码:

data(){
    return {
        msg: ''
    }
},
methods:{
    add(){
        console.log(msg)
    }
},

错误原因:

方法中调用 data 中的数据时,忘记加上 this,因为找不到对应的变量,所以报错

解决方法:

在方法中的相应位置加上 this

data(){
    return {
        msg: ''
    }
},
methods:{
    add(){
        console.log(this.msg)
    }
},

错误 3.2

报错信息:

vue.esm.js?efeb:628 [Vue warn]: Error in v-on handler: "TypeError: Failed to execute 'setItem' on 'Storage': 2 arguments required, but only 1 present."

found in

---> <SearchBox> at src/components/SearchBox.vue
       <App> at src/App.vue
         <Root>

错误代码:

localStorage.setItem(JSON.stringify(task_list))

错误原因:

localStorage 的 setItem 方法要有两个参数,即键和值。这里只写了值,没有指定键,所以报错。

解决方法:

把键指定好

localStorage.setItem(’task_list‘, JSON.stringify(task_list))

Unknown custom element

错误 1.1

报错信息:

[Vue warn]: Unknown custom element: <addnum> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

(found in <Root>)
warn @ vue.js:634

错误代码:

Vue.component ('AddNum', {
        data () {
            return {
                num: 0
            }
        },
...

错误原因:

vue 中,组件名不要使用过多的大写字母,最好一个也不要有。大小写差异可能会造成 vue 的报错

解决方法:

把组件名改小写,可带下划线或减号。

Vue.component ('add-num', {
        data () {
            return {
                num: 0
            }
        },
...