2023 在 VS Code 中调试 Vue项目 打断点

本文介绍了在VSCode中调试Vue2项目时遇到的问题,特别是devtool配置为cheap-module-eval-source-map导致的调试不支持。解决方案是改用source-map并调整launch.json配置,包括sourceMapPathOverrides的设置,以正确映射源码和打包后的文件。此外,还详细说明了launch和attach两种调试模式的区别及如何配置attach模式,包括在Chrome启动参数中添加远程调试端口。
摘要由CSDN通过智能技术生成

2023 在 VS Code 中调试 Vue2 项目

2023/2/13更新: devtool: 'cheap-module-eval-source-map', 此项配置,所提供的source-map 信息太少,vscode不支持在此种情况下进行调试,请使用devtool: 'source-map',. 我也尝试通过配置sourceMapPathOverrides 解决,无果.
原因我猜测如下: devtool: 'source-map 会生成一份js 和一份js.map文件 在 dist 目录下,其中 .map文件下有如下配置:

  "version":3,
  "sources":[
    "webpack:///src/app.js",
    "webpack:///./src/app.js",
    ...
  ]

vscode 会根据这些信息进行代码位置的配对,但是 cheap-module-eva 会把map文件的内容混入到js文件中,同时进行模块化处理,此信息不足以支持vscodedebugger操作.(个人见解)

环境:

VsCode@1.75

webpack@3.12.0

vue@2.6.11

由于官网教程许久未更新 Vue2文档,教程中的所提及的VsCode插件:

已经被合并为:

部分配置已经不尽相同,经过多次尝试,下面这一套配置适用于目前最新VsCode版本以及Vue-cli创建的项目:

launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
		//launch方式会重新打开一个浏览器窗口
        {
            "type": "chrome",
            "request": "launch",
            "name": "launch vuejs: chrome",
            "url": "http://localhost:8080",
            "webRoot": "${workspaceFolder}",
            "sourceMaps": true,
            "sourceMapPathOverrides": {
                "webpack:///src/*.vue": "${webRoot}/src/*.vue",
                "webpack:///./src/*.js": "${webRoot}/src/*.js",
               
            }
        },
        {
            "type": "chrome",
            "request": "attach",
            "name": "attach vuejs: chrome",
            "urlFilter": "https://localhost:8080/*",
            "port": 9222,
            "webRoot": "${workspaceFolder}",
            "breakOnLoad": true,
            "sourceMaps": true,
            "sourceMapPathOverrides": {
                "webpack:///src/*.vue": "${webRoot}/src/*.vue",
                "webpack:///./src/*.js": "${webRoot}/src/*.js",
                
            }
          }

    ]
}

关于${workspaceFolder} ,指的就是项目文件夹所在的路径,例如:image-20230206224326727

mini-vue项目的路径 "xxxx/mini-vue"就是${workspaceFolder}的值.

sourceMapPathOverrides: 这里的配置和vue2文档的不尽相同,配置该项主要是的目的就是将webpack打包的后的source-map文件与本地文件相对应起来,如果路径配置错误,将无法打断点.

"webpack:///src/*.vue": "${webRoot}/src/*.vue",
"webpack:///./src/*.js": "${webRoot}/src/*.js",

重点就是将vue文件和js文件分别进行映射,否则可能出现js文件可以打断点,vue文件不可以打断点的情况,如果你的源码不是在src里面或者有多个,分别映射即可.

launchattach:

前者的意思就是 VSCode 会打开这个程序然后进入调试,后者的意思是你已经打开了程序,然后接通 Node.js 的内部调试协议进行调试. 经过测试,launch方式打开的浏览器没有插件等相关内容(类似于无痕窗口) 如 vue devtool,attach方式则和一般开发流程类似.

launch方式配置好之后直接启动就好,而attach方式还需要一些折腾才能使用,如果launch方式足以满足你的调试需求,那么接下来attach方式的额外配置则不需要在意:

  • 首先先关闭所有的Chrome窗口(确保任务管理器中Chrome进程都被关闭掉了);

  • 找到Chrome启动快捷键,右键打开属性,在“目标”中增加启动参数--remote-debugging-port=9222 ,记住这里的端口为 9222 和上面的配置文件保持一致;大致如下:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222

image-20230206222042461

  • 启动你的本地项目,在Chrome中打开项目地址,如 http://localhost:8080

  • 在VSCode中运行attach vuejs: chrome,启动调试;

  • 注: attach 模式中,如果配置 “url”: “http://localhost:8080/” 。这种URL配置不适用于 attach 模式。换成 “urlFilter”: “http://localhost:8080/*” ,并且要使用通配符。

PS: 如果你恰好和我一样喜欢常用浏览器固定到底部菜单栏,那么可以到如下位置:

"C:\Users\用户名\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\StartMenu"

找到相关的快捷方式进行设置

image-20230206222159305

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值