浅析Visual Studio Code断点调试Vue


Posted in Javascript onFebruary 27, 2018

很多人习惯在 Chrome 的调试窗口中调试 Vue 代码, 或者直接使用 console.log 来观察变量值, 这是非常痛苦的一件事,需要同时打开至少 3 个窗体。个人还是更加习惯于断点调试。这篇文章将介绍如何配置 Visual Studio Code 和 Chrome 来完成直接在 VS Code 断点调试代码, 并且在VS Code的调试窗口看到Chrome中console相同的值。

设置 Chrome 远程调试端口

首先我们需要在远程调试打开的状态下启动 Chrome, 这样 VS Code 才能 attach 到 Chrome 上:

Windows

  • 右键点击 Chrome 的快捷方式图标,选择属性
  • 在目标一栏,最后加上--remote-debugging-port=9222 注意要用空格隔开

macOS

打开控制台执行:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

Linux

打开控制台执行:

google-chrome --remote-debugging-port=9222

Visual Stuido Code 安装插件

点击 Visual Studio Code 左侧边栏的扩展按钮, 然后在搜索框输入Debugger for Chrome并安装插件,再输入,安装完成后点击 reload 重启 VS Code

添加 Visual Studio Code 配置

  • 点击 Visual Studio Code 左侧边栏的 调试 按钮, 在弹出的调试配置窗口中点击 设置 小齿轮, 然后选择 chrome, VS Code 将会在工作区根目录生成.vscode 目录,里面会有一个 lanch.json 文件并会自动打开
  • 用下面的配置文件覆盖自动生成的 lanch.json 文件内容。
{
 // Use IntelliSense to learn about possible attributes.
 // Hover to view descriptions of existing attributes.
 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 "version": "0.2.0",
 "configurations": [
  {
   "type": "chrome",
   "request": "attach",
   "name": "Attach to Chrome",
   "port": 9222,
   "webRoot": "${workspaceRoot}/src",
   "url": "http://localhost:8080/#/",
   "sourceMaps": true,
   "sourceMapPathOverrides": {
    "webpack:///src/*": "${webRoot}/*"
   }
  }
 ]
}

修改 webpack 的 sourcemap

如果你是基于 webpack 打包的 vue 项目, 可能会存在断点不匹配的问题, 还需要做些修改:

  • 打开根目录下的 config 目录下的 index.js 文件
  • 将dev 节点下的 devtool 值改为 'eval-source-map'
  • 将dev节点下的 cacheBusting 值改为 false

开始调试吧

一切具备了, 现在验收成果了

  • 通过第一步的方式以远程调试打开的方式打开 Chrome
  • 在 vue 项目中执行npm run dev以调试方式启动项目
  • 点击 VS Code 左侧边栏的调试按钮,选择 Attach to Chrome 并点击绿色开始按钮,正常情况下就会出现调试控制条。
  • 现在就可以在.vue文件的js代码中打断点进行调试了。
Javascript 相关文章推荐
静态的动态续篇之来点XML
Dec 23 Javascript
jquery对dom的操作常用方法整理
Jun 25 Javascript
浅析js中取绝对值的2种方法
Jul 09 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
Dec 16 Javascript
一分钟理解js闭包
May 04 Javascript
用原生js统计文本行数的简单示例
Aug 19 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
react学习笔记之state以及setState的使用
Dec 07 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
Jan 23 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
May 27 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
js实现简单图片拖拽效果
Feb 22 Javascript
angularJs 表格添加删除修改查询方法
Feb 27 #Javascript
ExtJs整合Echarts的示例代码
Feb 27 #Javascript
angularJS实现动态添加,删除div方法
Feb 27 #Javascript
浅谈React中的元素、组件、实例和节点
Feb 27 #Javascript
AngularJS动态添加数据并删除的实例
Feb 27 #Javascript
JS严格模式知识点总结
Feb 27 #Javascript
总结js函数相关知识点
Feb 27 #Javascript
You might like
thinkPHP实现瀑布流的方法
2014/11/29 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
2015/03/25 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
JavaScript类和继承 constructor属性
2010/03/04 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
JS不间断向上滚动效果代码
2013/12/25 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
正则验证小数点后面只能有两位数的方法
2017/02/28 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
关于jQuery库冲突的完美解决办法
2017/05/20 jQuery
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Python中分数的相关使用教程
2015/03/30 Python
python os用法总结
2018/06/08 Python
Python计算IV值的示例讲解
2020/02/28 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
Python requests模块cookie实例解析
2020/04/14 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
网页美工求职信
2014/02/15 职场文书
感恩之星事迹材料
2014/05/03 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
2014中学教师节广播稿
2014/09/10 职场文书
2015年世界环境日活动方案
2015/05/05 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
Vue如何实现组件间通信
2021/05/15 Vue.js
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL