浅析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生成随机数的方法
May 16 Javascript
JavaScript作用域链示例分享
May 27 Javascript
javascript将DOM节点添加到文档的方法实例分析
Aug 04 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
Jan 13 Javascript
vue模板语法-插值详解
Mar 06 Javascript
require.js中的define函数详解
Jul 10 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
微信小程序框架wepy之动态控制类名
Sep 14 Javascript
详解js创建对象的几种方法及继承
Apr 12 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 Javascript
bootstrap table实现横向合并与纵向合并
Jul 18 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
博士208HAF收音机实习报告
2021/03/02 无线电
php下实现农历日历的代码
2007/03/07 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
[原创]图片分页查看
2006/08/28 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
浅谈jQuery 选择器和dom操作
2016/06/07 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
详解webpack babel的配置
2018/01/09 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
对Python新手编程过程中如何规避一些常见问题的建议
2015/04/01 Python
python实现计算倒数的方法
2015/07/11 Python
python抓取文件夹的所有文件
2018/02/27 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
python 写一个性能测试工具(一)
2020/10/24 Python
HTML5 用动画的表现形式装载图像
2016/03/08 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
销售实习自我鉴定
2013/12/07 职场文书
竞选演讲稿范文
2013/12/28 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
体育教师求职信
2014/06/30 职场文书
党的群众路线教育实践活动个人对照检查材料(校长)
2014/11/05 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL