VSCode launch.json配置详细教程


Posted in Javascript onJune 18, 2020

vscode原文地址

以下为vscode 的node.js debugger 的 launch.json 配置详情:

启动配置必须设定请求类型,属性request , 分为launch(启动) 和 attach(附加)两种 ,看下面例子:

{
 "version": "0.2.0",
 "configurations": [
  {
   ...
   "request": "launch", //请求类型为启动

  },
  {
  ...
   "request": "attach", //请求类型为附加

  }
 ]
}

下面是launch 和 attach 类型共有的属性:

  • protocol 设置调试协议
  • auto 尝试自动检测目标运行时使用的协议
  • inspector 新的V8调试器协议,解决遗留版本的多数问题,node versions >= 6.3 and Electron versions >= 1.7.4.
  • legacy 原始的v8调试器协议,node versions < v8.0 and Electron versions < 1.7.4.
  • port调试使用的端口
  • address TCP/IP地址,用于远程调试
  • localRoot 远程调试时映射的本地地址
  • remoteRoot 远程调试时的远程目录地址
  • sourceMaps 默认为true
  • outFiles 当map文件不在js文件同目录时用于指定 sourceMaps的位置
  • restart 自动重启调试
  • timeout 配置自动附加的超时时间
  • stopOnEntry 自动断点到第一行代码处
  • smartStep 自动跳过未映射到源代码的代码
  • skipFiles :[]String,指定跳过单步调试的代码
"skipFiles": [
 "${workspaceFolder}/node_modules/**/*.js", //跳过node_modules
 "${workspaceFolder}/lib/**/*.js",//跳过lib
 "<node_internals>/**/*.js"//跳过node核心模块
 ]

trace启用诊断输出

以下是特定于类型 launch(启动)的配置属性:

  • program 指定调试入口文件地址
  • args :[]String 传递给程序的参数,可在process.argv拿到
  • cwd 指定程序启动调试的目录 ,当vscode启动目录不是项目根目录,并且调试npm script时非常有用
  • runtimeExecutable 设置运行时可执行文件路径,默认是node
  • 可以是其他的执行程序,如npm、nodemon
  • runtimeArgs 传递给运行时可执行文件的参数,例如:
{
   "type": "node",
   "request": "launch",
   "name": "npm launch app",
   "args":["a"],
   "runtimeExecutable": "npm",
   "runtimeArgs": [
    "run-script",
    "app",
    "b"
   ],
   "port": 6666
  }

打印参数可以发现 args 、runtimeArgs都会传给程序,但是runtimeArgs参数会紧跟可执行文件

VSCode launch.json配置详细教程

  • runtimeVersion 设置运行时可执行程序的版本,如果使用nvm,可以切换node.js版本
  • env 添加额外的环境变量
  • envFile 文件加载环境变量
  • console 配置终端可以是外部终端或者内部集成终端,默认值internalConsole
  • outputCapture -如果设置为std,则进程stdout / stderr的输出将显示在调试控制台中,而不是侦听调试端口上的输出。这对于直接写入stdout / stderr流而不是使用console.*API的程序或日志库很有用。
  • autoAttachChildProcesses 跟踪调试对象的所有子过程,并自动附加到在调试模式下启动的子过程

以下是特定于类型 attach(附加)的配置属性:

  • processId 指定nodejs进程id,由于每次启动都会变,传入"${command:PickProcess}"

questions:

1. 如果使用了符号链接怎么调试?

传递参数:

{
 "runtimeArgs": ["--preserve-symlinks"]
}

如果主脚本也在符号链接路径里面,需要再传递一个参数"--preserve-symlinks-main",支持的版本是 Node 10+.

2. 如何调试ECMAScript模块?

如果使用esm或传递--experimental-modules给Node.js以便使用ECMAScript模块,则可以传递这些选项通过runtimeArgs属性:

  • "runtimeArgs" : ["--experimental-modules"] -使用Node v8.5.0 +中的实验性ECMAScript模块支持
  • "runtimeArgs" : ["-r", "esm"] -使用esm ES模块加载器(请注意,["-r esm"]如果没有逗号,则无法使用)

总结

到此这篇关于VSCode launch.json配置详细教程的文章就介绍到这了,更多相关VSCode launch.json配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript中为元素加上name属性的方法
May 09 Javascript
5个javascript的数字格式化函数分享
Dec 07 Javascript
ECMAScript 创建自己的js类库
Nov 22 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
Mar 12 Javascript
jQuery中 delegate使用的问题
Jul 03 Javascript
微信小程序的动画效果详解
Jan 18 Javascript
BootStrap daterangepicker 双日历控件
Jun 02 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
Oct 30 Javascript
浅谈vue中慎用style的scoped属性
Nov 28 Javascript
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
js实现数字滚动特效
Dec 16 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 #Javascript
通过实例了解JS执行上下文运行原理
Jun 17 #Javascript
从0搭建vue-cli4脚手架
Jun 17 #Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
Jun 17 #Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
Jun 17 #Javascript
vue移动端的左右滑动事件详解
Jun 17 #Javascript
详解JavaScript中的Object.is()与&quot;===&quot;运算符总结
Jun 17 #Javascript
You might like
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
javascript Excel操作知识点
2009/04/24 Javascript
JS 动态加载脚本的4种方法
2009/05/05 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
javascript关于继承解析
2016/05/10 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
JS实现统计字符串中字符出现个数及最大个数功能示例
2018/06/04 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
Python3.5 创建文件的简单实例
2018/04/26 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
反腐倡廉演讲稿
2014/05/22 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
签订劳动合同通知书
2015/04/16 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL