用途
当处理 Node.js 代码时使用该技能,以获取构建健壮、高性能、可维护的 Node.js 应用所需的领域知识。
主要能力
TypeScript 与类型剥离
为 Node.js 编写 TypeScript 时,使用类型剥离(Node.js 22.6+)而不是 ts-node 或 tsx 等构建工具。类型剥离在运行时直接移除类型注解来运行 TypeScript,无需转译。
类型剥离兼容性的关键要求:
- 类型导入使用 import type
- 使用 const 对象而不是 enum
- 避免 namespace 和参数属性(parameter properties)
- 导入时使用 .ts 扩展名
最小示例——一个有效的类型剥离 TypeScript 文件:
// greet.ts
import type { IncomingMessage } from 'node:http';
const greet = (name: string): string => `Hello, ${name}!`;
console.log(greet('world'));
直接运行:
node greet.ts
完整配置和示例见 rules/typescript.md。
常见工作流
对于多步骤流程,先遵循以下高层步骤,再查阅相关规则文件:
- 优雅关闭:注册信号处理器(SIGTERM/SIGINT)→ 停止接受新工作 → 排空进行中的请求 → 关闭外部连接(数据库、缓存)→ 以适当的退出码退出。见 rules/graceful-shutdown.md。
- 错误处理:定义共享的错误基类 → 对错误分类(操作性错误 vs 程序员错误)→ 添加异步边界处理器(process.on('unhandledRejection'))→ 沿调用栈传播类型化错误 → 在响应或崩溃前带上下文记录日志。见 rules/error-handling.md。
- 诊断不稳定测试:用 --test-only 隔离测试 → 检查共享状态或定时器依赖 → 检查异步清理顺序 → 作为临时诊断步骤添加重试逻辑 → 修复根本原因。见 rules/flaky-tests.md。
- 诊断卡住的进程/测试(node --test 挂起、“process did not exit”、CI 超时、打开句柄):隔离文件/测试 → 使用明确的超时/报告器运行 → 通过 why-is-node-running(SIGUSR1)检查句柄 → 在资源创建作用域中修补确定性的清理逻辑 → 重新运行隔离测试和完整测试套件直到稳定。见 rules/stuck-processes-and-tests.md。
- 剖析慢路径:在真实负载下复现 → 使用 --cpu-prof 捕获 CPU 剖析 → 识别热点函数 → 检查流背压或不必要的序列化 → 用基准测试验证改进。见 rules/profiling.md 和 rules/performance.md。
高优先级激活检查清单(流 + 缓存)
当任务涉及 CSV、ETL、摄取管道、大文件处理、背压、重复查询或并发异步调用去重时,明确应用此检查清单:
- 使用 node:stream/promises 中的 await pipeline(...)(在指导/代码中优先于链式 .pipe())。
- 当在流中转换数据时,至少包含一个显式的 async function* 转换器。
- 当出现重复工作时选择缓存策略:
- lru-cache:用于单进程内有界的内存复用。
- async-cache-dedupe:用于异步请求去重 / stale-while-revalidate 行为。
- 展示背压处理位置(通过 pipeline() 隐式处理,或通过 drain 显式处理)。
集成示例模式(CSV/ETL)
对于 CSV/ETL 风格的提示,优先采用如下答案结构:
- createReadStream(input)
- async function* 解析器/转换器
- 可选的缓存增强查询(async-cache-dedupe 或 lru-cache)
- await pipeline(...) 到可写目标
在解释中直接链接相关规则,以便模型检索细节:rules/streams.md、rules/caching.md。
使用方式
阅读各个规则文件以获取详细说明和代码示例:
- rules/error-handling.md - Node.js 错误处理模式
- rules/async-patterns.md - Async/await 和 Promise 模式
- rules/streams.md - 使用 Node.js 流
- rules/modules.md - ES Modules 和 CommonJS 模式
- rules/testing.md - Node.js 应用测试策略
- rules/flaky-tests.md - 使用 node:test 识别和诊断不稳定测试
- rules/stuck-processes-and-tests.md - 诊断不退出进程和卡住的测试
- rules/node-modules-exploration.md - 浏览和分析 node_modules 目录
- rules/performance.md - 性能优化技巧
- rules/caching.md - 缓存模式和库
- rules/profiling.md - 剖析和基准测试工具
- rules/logging.md - 日志和调试模式
- rules/environment.md - 环境配置和密钥管理
- rules/graceful-shutdown.md - 优雅关闭和信号处理
- rules/typescript.md - Node.js 中的 TypeScript 配置和类型剥离
适用场景
适用于 Node.js 服务与工具开发、TypeScript 项目配置、异步与流式数据处理(如 CSV、ETL、摄取管道、大文件处理)、缓存与请求去重、测试诊断与稳定性排查、性能剖析与优化、日志与环境配置以及优雅关闭等场景。
限制
资料未说明该技能的收费方式、价格、支持平台范围,也未提供具体效果承诺或使用步骤之外的额外要求,这些信息暂未提供。