浅析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 相关文章推荐
影响jQuery使用的14个方面
Sep 01 Javascript
跟我学习javascript的垃圾回收机制与内存管理
Nov 23 Javascript
在Html中使用Requirejs进行模块化开发实例详解
Apr 15 Javascript
深入理解JQuery循环绑定事件
Jun 02 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
安装vue-cli的简易过程
May 22 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
vue实现随机验证码功能的实例代码
Apr 30 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
JavaScript字符串处理常见操作方法小结
Nov 15 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中SESSION使用中的一点经验总结
2012/03/30 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php读取本地json文件的实例
2018/03/07 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
Vue使用vux-ui自定义表单验证遇到的问题及解决方法
2018/05/10 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
浅析Git版本控制器使用
2017/12/10 Python
Python模块WSGI使用详解
2018/02/02 Python
django 发送手机验证码的示例代码
2018/04/25 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
毕业生求职简历的自我评价
2013/10/07 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
小学英语教学反思案例
2014/02/04 职场文书
年度献血先进个人事迹材料
2014/02/14 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL