浅析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 相关文章推荐
javascript事件问题
Sep 05 Javascript
script标签属性type与language使用选择
Dec 02 Javascript
js自定义事件及事件交互原理概述(一)
Feb 01 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 Javascript
jQuery实现的简单拖动层示例
Feb 22 Javascript
JS 60秒后重新发送验证码的实例讲解
Jul 26 Javascript
Vue组件之全局组件与局部组件的使用详解
Oct 09 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
详解vue微信网页授权最终解决方案
Jun 16 Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 Javascript
js实现烟花特效
Mar 02 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中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
2017/03/13 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
Python实现批量修改文件名实例
2015/07/08 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
Python计算指定日期是今年的第几天(三种方法)
2020/03/26 Python
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
打架检讨书800字
2014/01/10 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
电话客服工作职责
2014/07/27 职场文书
岗位职责说明书模板
2014/07/30 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
后天观后感
2015/06/08 职场文书
环保守法证明
2015/06/24 职场文书
导游词之河北白洋淀
2020/01/15 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB