浅析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学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
jQuery实现列表自动滚动循环滚动展示新闻
Aug 22 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
JavaScript中SetInterval与setTimeout的用法详解
Nov 10 Javascript
有关jquery与DOM节点操作方法和属性记录
Apr 15 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
Jul 06 Javascript
javascript 正则表达式分组、断言详解
Apr 20 Javascript
JS实现匀加速与匀减速运动的方法示例
Sep 04 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
ES6的解构赋值实例详解
May 06 Javascript
JS实现简单省市二级联动
Nov 27 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 获取mysql数据库信息代码
2009/03/12 PHP
PHP中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
jQuery中slideUp 和 slideDown 的点击事件
2015/02/26 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
Angularjs按需查询实例代码
2017/10/30 Javascript
JS获取并处理php数组的方法实例分析
2018/09/04 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python迭代器和生成器介绍
2015/03/06 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
不可错过的十本Python好书
2017/07/06 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
HTML5 b和i标记将被赋予真正的语义
2009/07/16 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
工程部经理岗位职责
2015/02/02 职场文书
《藏戏》教学反思
2016/02/23 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android