SuperAPI AI 工具集

node

编程与开发

查看项目

更新于 10-15 12:19

技能介绍

用途

当处理 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 风格的提示,优先采用如下答案结构:

  1. createReadStream(input)
  2. async function* 解析器/转换器
  3. 可选的缓存增强查询(async-cache-dedupe 或 lru-cache)
  4. 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、摄取管道、大文件处理)、缓存与请求去重、测试诊断与稳定性排查、性能剖析与优化、日志与环境配置以及优雅关闭等场景。

限制

资料未说明该技能的收费方式、价格、支持平台范围,也未提供具体效果承诺或使用步骤之外的额外要求,这些信息暂未提供。