浅析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 相关文章推荐
js option删除代码集合
Nov 12 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
Apr 07 Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 Javascript
js验证是否为数字的总结
Apr 14 Javascript
js实现页面转发功能示例代码
Aug 05 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
微信小程序使用request网络请求操作实例
Dec 15 Javascript
微信小程序如何利用getCurrentPages进行页面传值
Jul 01 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
PHP文件下载类
2006/12/06 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
document 和 document.all 分别什么时候用
2006/06/22 Javascript
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
代码获取历史上的今天发生的事
2014/04/11 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
JS常用知识点整理
2017/01/21 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
深入理解 JavaScript 中的 JSON
2017/04/06 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
前端 javascript 实现文件下载的示例
2020/11/24 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python 求数组局部最大值的实例
2019/11/26 Python
Python PyQt5整理介绍
2020/04/01 Python
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
车间副主任岗位职责
2013/12/24 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python
JavaScript数组 几个常用方法总结
2021/11/11 Javascript
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers