浅析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 相关文章推荐
htm调用JS代码
Mar 15 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
Jun 18 Javascript
ExtJs 表单提交登陆实现代码
Aug 19 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
Aug 05 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
May 12 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
jquery replace方法去空格
May 08 jQuery
three.js实现圆柱体
Dec 30 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
Aug 08 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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
php中判断文件空目录是否有读写权限的函数代码
2012/08/07 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
AJAX的跨域与JSONP(为文章自动添加短址的功能)
2010/01/17 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
node.js中的path.isAbsolute方法使用说明
2014/12/08 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
jQuery实现分隔条左右拖动功能
2015/11/21 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
Python入门教程之if语句的用法
2015/05/14 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
对numpy中shape的深入理解
2018/06/15 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
css3利用transform变形结合事件完成扇形导航
2020/10/26 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
软件工程师面试题
2012/06/25 面试题
外贸学院会计专业应届生求职信
2013/11/14 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书
先进典型事迹材料
2014/12/29 职场文书
调解协议书范本
2016/03/21 职场文书