浅析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 获取事件对象的注意点
Jul 29 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
Bootstrap每天必学之导航组件
Apr 25 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
WEB开发之注册页面验证码倒计时代码的实现
Dec 15 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
学习JS中的DOM节点以及操作
Apr 30 Javascript
小程序实现列表点赞功能
Nov 02 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
js实现图片实时时钟
Jan 15 Javascript
js实现无缝轮播图
Mar 09 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 8小时时间差的解决方法小结
2009/12/22 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP模块memcached使用指南
2014/12/08 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
php数据访问之查询关键字
2016/05/09 PHP
php递归函数怎么用才有效
2018/02/24 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
vue实现购物车小案例
2019/09/27 Javascript
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python比较两个列表是否相等的方法
2015/07/28 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python使用jieba实现中文分词去停用词方法示例
2018/03/11 Python
python树莓派红外反射传感器
2019/01/21 Python
python实现websocket的客户端压力测试
2019/06/25 Python
简单了解django索引的相关知识
2019/07/17 Python
Python爬虫教程之利用正则表达式匹配网页内容
2020/12/08 Python
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL