VSCode调试教程(1):了解基础知识

发布时间 - 2020-07-02 00:00:00    点击率:

在接下来的几篇文章中,我们将研究如何以专业的方式调试 JavaScript 和 TypeScript 代码。我们将学习如何使用 Visual Studio Code 中内置的调试器,而不是让 console.log 到处乱飞。

调试器允许你在程序运行时打开程序,查看其状态、变量、暂停并逐步观察数据流。你甚至可以运行代码片段,并在运行时环境中尝试想法。所有这些都无需停止程序后修改代码(添加 console.log!)并重新启动。你能够使用调试器解决问题并更快地了解代码。

我们先从一些简单的 Node.js 代码开始,然后着眼于调试浏览器程序、Express 服务器、GraphQL、TypeScript、Serverless、Jest 测试、Storybook 等等,不过在此之前要先了解一些必要的基础知识!即使你不喜欢服务器端 Node.js,仍然希望你先看完本文。

获取代码

该系列在 GitHub 上的代码:https://github.com/thekarel/debug-anything

我们第一个话题的代码非常简单——先把下面的代码复制粘贴到你的  index.js 文件中:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3456;
const serverUrl = `http://${hostname}:${port}`

const server = http.createServer((req, res) => {
  const name = 'World'

  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end(`Hello, ${name}!\n`);
});

server.listen(port, hostname, () => {
  console.log(`Server running at ${serverUrl}`);
});

现在继续并在 VS Code 中打开文件夹:

为了确保到一切正常,请试着运行它:

node index.js

然后访问 http://127.0.0.1:3456,你应该会看到 Hello, World!

请确保立即停止node index.js命令,否则你将收到一个丑陋的“错误: Error: listen EADDRINUSE error soon 

代码本身很简单:运行HTTP服务器,并用 “Hello,World!” 响应每个请求。很简单对不对?但是这段简单的代码足以了使我们解调试的基本概念。

添加新功能

让我们向服务器添加一个功能:我们不再返回硬编码的消息 "Hello, World!",而是从查询中得到 name,在点击 http://127.0.0.1:3456/?name=Coco 时会回复 Hello, Coco!

我们先假装不知道该怎么做,运行服务器后,发送请求并查看 Coco 出现在什么地方不是更有趣吗?试一试吧。启动调试器!

启动调试器

确保已在 VS Code 中打开 index.js,单击调试器图标,单击“运行并调试”,然后单击 Node.js:

现在你的服务器正在调试模式下运行!访问 http://127.0.0.1:3456?name=Coco 你不会看到任何不同,应该仍然返回默认消息。

接下来,在代码中添加一个断点(breakpoint),这样在下次访问服务器 URL 时将会暂停执行。可以通过单击编辑器左边的行号来实现:

访问 http://127.0.0.1:3456?name=Coco,VS Code 将弹出一个视图并暂停服务器:

我们需要先找出查询中 name 的位置,这样才能完成后面的工作。在左侧边栏 中:你会看到一个名为 Variables 的部分。在 Local 下,IDE 显示了函数本地作用域的所有变量。有一个看上去可能性很大的:req

现在我们知道了,请求查询字符串位于 req.url 中,在文档的帮助下,我们把代码脚本修改为:

const http = require('http');
const url = require('url'); 

const hostname = '127.0.0.1';
const port = 3456;
const serverUrl = `http://${hostname}:${port}`

const server = http.createServer((req, res) => {
  const {name} = url.parse(req.url, true).query;  

  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end(`Hello, ${name}!\n`);
});

server.listen(port, hostname, () => {
  console.log(`Server running at ${serverUrl}`);
});

由于代码已经被修改,所以需要重新启动服务器。使用调试器很简单:你可以按或单击绿色的重启图标:

你也可以禁用断点,因为现在不需要它了:

访问 http://127.0.0.1:3456?name=Coco,看看我们的工作成果! 

希望你能够继续探索调试器。在下一篇中,我们将会用  "step over"、 "step in" 和 "step out" 功能逐行调试代码。

VSCode调试教程系列:

1、基础知识

2、逐行步进调试

英文原文地址::https://charlesagile.com/debug-series-nodejs-browser-javascript

作者:Charles Szilagyi

本文转载自:https://segmentfault.com/a/1190000022764213

相关教程推荐:vscode入门教程


# vscode  # 调试器  # 单击  # 很简单  # 并在  # 行号  # 重新启动  # 步进  # 你可以  # 第一个  # 让我们 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用已有域名快速搭建网站?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  高性价比服务器租赁——企业级配置与24小时运维服务  Java遍历集合的三种方式  如何在阿里云购买域名并搭建网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  微信小程序 canvas开发实例及注意事项  5种Android数据存储方式汇总  奇安信“盘古石”团队突破 iOS 26.1 提权  Bootstrap整体框架之JavaScript插件架构  企业网站制作这些问题要关注  MySQL查询结果复制到新表的方法(更新、插入)  原生JS实现图片轮播切换效果  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  JavaScript实现Fly Bird小游戏  如何挑选优质建站一级代理提升网站排名?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在阿里云通过域名搭建网站?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  jQuery中的100个技巧汇总  制作公司内部网站有哪些,内网如何建网站?  js实现获取鼠标当前的位置  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何彻底卸载建站之星软件?  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何在新浪SAE免费搭建个人博客?  详解Oracle修改字段类型方法总结  Laravel如何实现数据库事务?(DB Facade示例)  JS中对数组元素进行增删改移的方法总结  JavaScript如何实现倒计时_时间函数如何精确控制  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  zabbix利用python脚本发送报警邮件的方法  详解Android中Activity的四大启动模式实验简述  如何在阿里云完成域名注册与建站?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel如何实现API速率限制?(Rate Limiting教程)  Laravel怎么在Blade中安全地输出原始HTML内容  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel PHP版本要求一览_Laravel各版本环境要求对照  html如何与html链接_实现多个HTML页面互相链接【互相】  高端建站如何打造兼具美学与转化的品牌官网?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  网站建设整体流程解析,建站其实很容易!