【Vue.js】Chromeのデベロッパーツールでデバッグする方法
Vue.js入門 基礎から実践アプリケーション開発まで で、VueRouterの勉強をしていたところ、なぜか値が画面に表示されないエラーが発生。
Vue.js devtoolsではいまいち原因が特定できなかったので、標準でついてるChromeのデベロッパーツールでデバッグしてみた。
問題のコードはこちら(トップページ、ユーザー一覧ページの実装は省略)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>SPA</title>
</head>
<body>
<script src="https://unpkg.com/[email protected]"></script>
<script src="https://unpkg.com/[email protected]"></script>
<div id="app">
<router-view></router-view>
</div>
<script type="text/x-template" id="user-detail">
<div>
<div class="loading" v-if="loading">読み込み中...</div>
<div v-if="error" class="error">
{{ error }}
</div>
<div v-if="user">
<h2>{{ user.name }}</h2>
<p>{{ user.description }}</p>
</div>
</div>
</script>
<script>
var userData = [
{
id: 1,
name: 'hoge',
description: 'hogehogehogehoe'
},
{
id: 2,
name: 'wafu',
description: 'wafuwafuwafuawefu'
}
]
var getUser = function (userId, callback) { //userIdを使う
setTimeout(function(){
//与えられた callback 関数を配列の各要素に対して一度ずつ呼び出し、callback が true と評価される値を返したすべての要素からなる新しい配列を生成
var filteredUsers = userData.filter(function(user){
return user.id === userId; //検証
})
callback(null, filteredUsers && filteredUsers[0]) //callbackの発動を定義
}, 1000)
}
var UserDetail = {
template: '#user-detail',
data: function(){
return{
loading: false,
user: null,
error: null
}
},
created: function(){
this.fetchData()
},
watch: {
'$route': 'fetchData'
},
methods: {
fetchData: function(){
this.loading = true
getUser(this.$route.params.userId, (function(err, user){ //callbackで渡す
this.loading = false
if(err){
this.err = err.toString
}else{
this.user = user
}
}).bind(this))
}
}
}
var router = new VueRouter({
routes: [
{
path: '/users/:userId',
component: UserDetail
}
]
})
var app = new Vue({
router: router
}).$mount('#app')
</script>
</body>
</html>
http://127.0.0.1:5500/index.html#/users/1
を打ち込んでも、ずっと 「読み込み中...」 と表示されてしまう。
では、早速デバッグしていこう。
cdnを使って、htmlファイル1枚でかいている。
それをそのままchromeに置いてもうまくデバッグできなかったので、Vscodeの右下にあるGo Liveで開く。
開けたら、検証=>Sourcesでファイルを選び、行数を選択してブレークポイントを定める。
今回は、getUser関数
に問題がありそうなのでその呼び出しのところにブレークポイントを置いた。
ブレークポイントを置いた後、http://127.0.0.1:5500/index.html#/users/1
にアクセスすると、処理が止まる。
そして、変数の部分、今回はthis.$route
の部分にマウスを当てると、変数が保持している値が一目瞭然となる。
this.$route.params.userId
が文字列の "1" であることが分かり、return user.id === userId;
の処理がうまくいっていないことが判明。
return user.id === Number(userId);
とし、無事にエラー解消。
Chromeのデベロッパーツール意外と便利!!!
フォームに値を埋める時とかはVue.js devtoolsの方が分かりやすいかも。
[参考]
ChromeのデベロッパーツールでJavaScriptをデバッグする方法(2019年版)
JavascriptのChromeでのデバッグ方法個人的まとめ2016
Author And Source
この問題について(【Vue.js】Chromeのデベロッパーツールでデバッグする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/wafuwafu13/items/5ca552fc2eb26227232a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .