热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用NDB提升Node.js应用调试体验

本文介绍了由GoogleChrome实验室推出的新一代Node.js调试工具NDB,旨在为开发者提供更加高效和便捷的调试解决方案。
原文链接: 使用 NDB 调试 Node.js 应用
Google Chrome 实验室最近发布了一款名为 NDB 的新型 Node.js 调试工具,显著提升了开发者的调试体验。本文将详细介绍 NDB 的特性和使用方法。

对于熟悉 Node.js 的开发者来说,Node.js 自带的调试工具可能已经不够用了,因为它基于已废弃的 V8 调试器协议,功能相对有限。随着技术的发展,社区推出了多种增强型调试工具,如 node-inspector,它允许开发者在基于 WebKit 内核的浏览器 DevTools 中调试 Node.js 应用,极大提高了调试效率。

自 Node.js v6.3.0 版本起,V8 Inspector 作为实验性功能加入,带来了与 Chrome DevTools 的深度集成,支持诸如 Blackbox、性能分析、工作区和源映射等高级功能。这使得开发者能够在 Chromium 内核浏览器、VS Code、WebStorm 等环境中轻松调试 Node.js 应用。

2017年7月20日,NDB 作为一款全新的 Node.js 调试工具正式开源,引起了广泛关注。

NDB 的诞生背景

NDB 的官方定义指出:

NDB 通过 Chrome DevTools 提供了改进的 Node.js 调试体验,无需依赖特定版本的 Node.js 或特定浏览器。

这意味着:

  1. NDB 专注于改善调试体验;
  2. 它利用了 Chrome DevTools 的强大功能;
  3. 由 Google Chrome 实验室维护和支持。

虽然 NDB 似乎是对 V8 Inspector 的升级,但实际上它提供了更多灵活性。例如,使用 V8 Inspector 和 Chrome DevTools 需要 Node.js 版本高于 6.3.0,并且必须使用 Chrome 或 Chromium 内核的浏览器。而 NDB 通过集成 Puppeteer(一个用于控制 Chromium 的 Node.js 库)解决了这些问题,使得 NDB 可以在任何环境中运行,无需考虑操作系统自带的浏览器版本。

不过,这种独立性也导致了 node_modules 文件夹的增大,因为其中包含了整个 Chromium 浏览器。尽管如此,NDB 的易用性和跨平台能力仍然使其成为开发者的首选工具。

NDB 的基本使用

为了更好地理解 NDB,我们可以通过一个简单的 Express 应用来演示其基本功能。

// app.js
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(3000, () => console.log('App running on port 3000!'));

接着,在 package.json 中添加一个启动脚本:

{
"scripts": {
"start": "node app.js"
}
}

安装 NDB

可以通过 npm 全局或局部安装 NDB:

npm install -g ndb

启动 NDB

NDB 提供了多种启动方式:

1. 直接执行文件

使用 NDB 命令直接运行文件,例如:

ndb app.js

2. 运行二进制可执行文件

可以使用 NDB 调试由二进制文件启动的服务,如 npm 脚本、Webpack 构建等:

ndb npm start

同样地,也可以运行其他命令,如 ndb webpackndb mocha

3. 启动项目

若只需启动 NDB 服务,可在项目根目录下运行 ndb .,这样可以在脚本执行前设置断点、编辑文件等。

以下示例均采用第三种启动方式。

设置断点

在 NDB 中设置断点非常直观,可以在代码加载前预先设定。

文件处理

利用 Chrome DevTools,用户可以在项目中创建、编辑并保存文件。

运行 npm 脚本

项目中的 npm 脚本可以直接通过 NDB 的界面运行。

内置终端

NDB 提供了直接访问终端的功能,便于执行各种命令。

Blackboxing

NDB 默认会忽略某些外部文件,如 Node.js 内置库,帮助开发者集中注意力于核心代码。

进程管理

NDB 的进程面板列出了所有由 NDB 启动的 Node.js 进程,并能方便地管理子进程。

代码片段

NDB 支持创建和执行代码片段,方便快速测试代码逻辑。

变量访问

NDB 可以访问当前进程变量及 Node.js 的全局变量,为调试提供了便利。


推荐阅读
  • 利用 Jest 和 Supertest 实现接口测试的全面指南
    本文深入探讨了如何使用 Jest 和 Supertest 进行接口测试,通过实际案例详细解析了测试环境的搭建、测试用例的编写以及异步测试的处理方法。 ... [详细]
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
  • Vue项目中应用骨架屏实践
    在当前开发的项目中,由于登录过程涉及多次重定向,导致用户体验不佳。为了改善这一状况,本文介绍了如何使用vue-skeleton-webpack-plugin插件在Vue项目中实现骨架屏,以减少用户感受到的白屏时间。 ... [详细]
  • 在进行微信小程序开发过程中,遇到了需要实现类似微信朋友圈那样的长文本折叠功能的需求。本文将详细探讨其实现方法及注意事项。 ... [详细]
  • 本文介绍如何使用Python编写一个简单的爬虫程序,从知乎问题页面抓取美腿图片。环境配置包括Windows 10操作系统,Python语言及其相关库。 ... [详细]
  • 1.选择一个翻译页面,我选择的是有道词典(http:dict.youdao.com)2.随便输入一个英语单词进行翻译,然后查看源文件,找到 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 如何清空Layui树结构
    本文将详细介绍如何使用Layui框架清空树形结构,包括创建树、添加节点以及实现清空功能的具体步骤。通过本文,您将能够掌握Layui树的管理技巧。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
author-avatar
当个谎言家很不错非
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有