浅析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 相关文章推荐
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
JavaScript对象的property属性详解
Apr 01 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
Nov 11 Javascript
利用BootStrap弹出二级对话框的简单实现方法
Sep 21 Javascript
微信小程序 判断手机号的实现代码
Apr 19 Javascript
Angularjs中数据绑定的实例详解
Aug 25 Javascript
JS和Canvas实现图片的预览压缩和上传功能
Mar 30 Javascript
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
浅谈对于react-thunk中间件的简单理解
May 01 Javascript
微信小程序设置滚动条过程详解
Jul 25 Javascript
详解Vue中CSS样式穿透问题
Sep 12 Javascript
vue实现几秒后跳转新页面代码
Sep 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循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
javascript知识点收藏
2007/02/22 Javascript
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
js实现上传按钮并显示缩略图小轮子
2020/05/04 Javascript
创建与框架无关的JavaScript插件
2020/12/01 Javascript
Python中functools模块函数解析
2017/03/12 Python
python正则表达式面试题解答
2020/04/28 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
如何基于Python批量下载音乐
2019/11/11 Python
Django框架安装及项目创建过程解析
2020/09/14 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
struct和class的区别
2015/11/20 面试题
Lucene推荐的分页方式是什么?
2015/12/07 面试题
应用化学专业本科生求职信
2013/09/29 职场文书
作文评语大全
2014/04/23 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
领导干部学习心得体会
2016/01/23 职场文书
中学音乐课教学反思
2016/02/18 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL
golang为什么要统一错误处理
2022/04/03 Golang