浅析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 相关文章推荐
非html5实现js版弹球游戏示例代码
Sep 22 Javascript
JS滚轮事件onmousewheel使用介绍
Nov 01 Javascript
js中的for如何实现foreach中的遍历
May 31 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
详解微信小程序 登录获取unionid
Jun 27 Javascript
详解vue中引入stylus及报错解决方法
Sep 22 Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
vue 根据数组中某一项的值进行排序的方法
Aug 30 Javascript
angular学习之动态创建表单的方法
Dec 07 Javascript
Vue3.0的优化总结
Oct 16 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介绍篇
2010/10/26 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
js实现左右两侧浮动广告
2018/07/09 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
python机器学习之神经网络(三)
2017/12/20 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
详解Canvas 跨域脱坑实践
2018/11/07 HTML / CSS
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
物流管理应届生求职信
2013/11/07 职场文书
编辑找工作求职信分享
2014/01/03 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
破坏寝室公物检讨书
2014/11/17 职场文书
新员工考核评语
2014/12/31 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书