全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

NodeJS调试与工具链专题

专题说明

本专题聚焦Node.js开发过程中的调试技术、性能分析、单元测试和开发工具链使用。掌握这些技能可以快速定位问题、保障代码质量、提升开发效率。

学习目标

  1. 掌握Node.js多种调试方式(Chrome DevTools、CLI调试器、VS Code调试)
  2. 学会使用性能分析工具(Clinic.js)诊断CPU、内存、事件循环问题
  3. 理解单元测试框架(Jest/Mocha)的使用和异步测试技巧
  4. 掌握ESLint代码风格检查和Nodemon开发热重载配置

学习内容

专题涵盖以下核心知识点:

  • Node.js调试基础:inspect模式启动、断点设置、调试器连接
  • Chrome DevTools调试:Sources面板、调用栈查看、变量监视
  • CLI调试器:内置调试命令、单步执行、断点管理
  • 日志与错误处理:console调试技巧、Error对象结构、错误捕获
  • 单元测试框架:Jest断言、异步测试、Mock与Spy
  • 性能分析工具:Clinic.js工具集、火焰图分析、事件循环诊断
  • ESLint与Nodemon:代码规范检查、自动重启配置、开发流程集成

学习建议

  1. 先从调试基础入手,理解Node.js调试模式的工作原理
  2. 实践Chrome DevTools调试,掌握断点、单步执行、变量查看
  3. 学习性能分析工具,结合实际项目进行性能诊断
  4. 配置ESLint和Nodemon,建立完整的开发工具链
  5. 完成专题题目练习,巩固理论知识与实践技能

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

在Node.js中,如何以调试模式启动一个脚本?

A

node run app.js --debug

B

node --inspect app.js

C

node debug app.js

D

node --debugger app.js

2
判断题

node --inspect-brk app.jsnode --inspect app.js的区别是:前者会在脚本第一行自动暂停,而后者会立即执行脚本。

A

B

3
单选题

在开发环境中,需要将Node.js调试端口设置为自定义端口8888,同时通过环境变量配置调试模式,以下哪种方式正确?

A

DEBUG_PORT=8888 node app.js

B

node --inspect=8888 app.js

C

NODE_DEBUG=8888 node app.js

D

node --inspect --port=8888 app.js

4
单选题

在Node.js项目中使用dotenv管理环境变量,以下哪个是正确的使用方式?

A

const env = require('dotenv').parse()

B

require('dotenv').config()

C

import { load } from 'dotenv'

D

dotenv.load()

5
单选题

启动Node.js调试模式后,在Chrome浏览器中打开哪个URL可以访问调试界面?

A

chrome://inspect

B

chrome://debug

C

devtools://localhost:9229

D

chrome://devtools

6
多选题

使用Chrome DevTools调试Node.js时,可以进行哪些调试操作?

A

设置断点并单步执行代码

B

查看调用栈和变量状态

C

动态修改源代码并热更新

D

监控CPU和内存使用情况

E

实时修改process.env环境变量

7
单选题

Node.js使用--inspect启动后,Chrome DevTools是如何连接到Node.js进程的?

A

通过HTTP请求访问Node.js的REST API

B

通过WebSocket建立双向通信通道

C

通过共享内存进行数据交换

D

通过Unix域套接字进行通信

8
单选题

使用Node.js内置CLI调试器时,哪个命令用于设置断点?

A

break

B

setBreakpoint

C

sb

D

bp

9
多选题

使用Node.js CLI调试器调试时,以下哪些命令可以控制程序执行流程?

A

cont - 继续执行直到下一个断点

B

next - 执行下一行代码,不进入函数

C

step - 执行下一行代码,进入函数内部

D

pause - 立即暂停正在执行的代码

E

restart - 重新启动调试会话

10
填空题

在Node.js CLI调试器中,可以使用______命令进入交互式环境,在其中可以执行任意JavaScript表达式。在调试器中查看变量user的值,可以输入______直接显示,或者使用____________命令执行。

11
填空题

使用console测量代码执行时间,需要先调用____________('timer')开始计时,然后执行需要测量的代码,最后调用_______________('timer')输出耗时。两个方法的______参数必须完全相同才能正确匹配。

12
多选题

关于Node.js中的Error对象,以下哪些说法正确?

A

Error对象包含message属性存储错误信息

B

Error对象包含stack属性存储调用栈信息

C

Error.captureStackTrace可以自定义堆栈跟踪起点

D

Error对象有code属性存储系统错误代码

E

所有Error对象都自动包含cause属性记录原始错误

13
单选题

以下哪种方式可以正确捕获async函数中的错误?

A

try { asyncFunc(); } catch(e) {}

B

asyncFunc().catch(e => {})

C

try { await asyncFunc(); } catch(e) {}

D

catch(asyncFunc()) { e => {} }

14
单选题

在Jest中,使用哪个断言方法来验证值是否严格等于预期值?

A

expect(value).toBe(expected)

B

expect(value).toEqual(expected)

C

expect(value).toStrictEquals(expected)

D

expect(value).equals(expected)

15
填空题

在Jest中测试异步代码,有三种方式:

  1. 使用______参数的回调形式
  2. 返回_______对象
  3. 使用___________语法
16
判断题

Jest的jest.fn()创建的mock函数可以记录被调用的次数、参数和返回值,用于验证函数的行为和隔离测试。

A

B

17
单选题

Clinic.js是一个Node.js性能诊断工具集,以下哪个工具专门用于检测事件循环阻塞问题?

A

clinic doctor

B

clinic bubbleprof

C

clinic flame

D

clinic heapprofiler

18
单选题

使用Clinic.js的clinic flame生成的火焰图主要用于分析什么问题?

A

内存泄漏问题

B

CPU密集型操作和热点函数

C

事件循环延迟

D

网络请求延迟

19
填空题

ESLint可以通过创建_____________文件来排除不需要检查的文件和目录,其语法与__________文件相同。也可以在配置文件中使用______________字段配置忽略规则。

20
填空题

在nodemon运行过程中,可以输入______命令手动触发重启。如果需要暂停nodemon的监控功能但不停止应用,可以使用__________参数启动,或者在运行时按______停止nodemon。

← 上一个专题 NodeJS环境搭建与运行
下一个专题 → NodeJS运行时原理专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库