vscode断点调试工程化服务端文件

一、创建express应用
我们使用express-generator创建一个新的express应用。
1、全局安装express-generator

// 安装
sudo npm install express-generator -g
// 检测是否安装成功
express -v

2、生成express应用目录

express myapp

可以看到,这个小应用已经五脏俱全,有Node服务器配置,公共资源文件夹,视图文件夹,以及路由配置。

vscode断点调试工程化服务端文件
3、运行express应用

// 安装依赖
cd myapp && npm install
// 启动应用
npm start

4、访问
这时我们在浏览器中访问localhost:3000,即可浏览页面。

二、调试express应用
1、点击左侧栏调试按钮,切换到debug模式
点击添加配置按钮,选择nodejs环境,此时vscode会自动在.vscode文件夹下新建launch.json文件,根据调试需要自己修改launch.json文件,然后选择调试配置。

{
    // 使用 IntelliSense 了解相关属性。
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "attach",
            "name": "附加到端口",
            "address": "localhost",
            "port": 5858
        },
        {
            "type": "node",
            "request": "launch",
            "name": "启动程序",
            "program": "${workspaceFolder}/bin/www"
        }
    ]
}

program字段定义了整个应用的入口,开启调试器的时候会从这个入口启动应用。VScode在初始化这个配置文件的时候,会查看package.json中是否有包含了键名为start的scripts,如果有,就会把start配置的内容作为“program”字段的值。
2、设置断点
打开myapp/routes/index.js文件,这个文件配置了应用根路径的路由,当前的处理是返回一个页面,传入字符串"Express"作为视图的参数。
我们用鼠标在行号6的左边单击左键,就可以设置一个断点。注意,添加断点之前要先关闭调试,关闭的方法是点击界面上方的调试控制面板中的停止按钮(橘色正方形)。
3、开始调试
点击开始调试按钮(绿色向右三角形),这时界面上方就会出现一个调试控制的面板,页面右下方会出现一个调试控制台,用来查看程序输出的信息,在界面下方会出现一个状态栏,当前的橘黄色表示应用正常运行。
4、浏览页面
在浏览器中访问localhost:3000,会发现页面可以打开,应用已经正常启动了。这时候,断点的形状发生了变化,程序停留在了断点,调试控制面板的按钮也发生了变化,从左到右依次是单步跳过,单步调试,单步跳出,重启,停止调试,这几个都是常见的断点调试指令。
5、调试界面介绍
在vscode界面的左边,可以查看当前上下文环境,也可以设置变量监听。将鼠标停在断点前的变量或者参数上,可以查看该变量当前的数值。

三、备注

如果设置了断点,但是没有执行,说明断点设置不对,请重新选择断点。

// 调试node程序,参考配置
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/app.js",
      "stopOnEntry": false,
      "args": [],
      "cwd": "${workspaceRoot}",
      "preLaunchTask": null,
      "runtimeExecutable": null,
      "runtimeArgs": [
        "--nolazy"
      ],
      "env": {
        "NODE_ENV": "development"
      },
      "externalConsole": false,
      "sourceMaps": false,
      "outDir": null //编译后,代码生成目录
    },
    {
      "name": "Attach",
      "type": "node",
      "request": "attach",
      "port": 5858, // 如果关联到正在运行的任务
      "address": "localhost",
      "restart": false,
      "sourceMaps": false, // 利用编译生成的map把源码和编译后的代码对应起来
      "outDir": null,
      "localRoot": "${workspaceRoot}",
      "remoteRoot": null
    }
  ]
}
上一篇:Js 怎么遍历json对象所有key及根据动态key获取值(根据key值获取相应的value值)


下一篇:Angular安装及创建第一个项目