Node.js 可靠编程
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f12a44b7/self-dev-nodejs。
技能介绍
要解决的问题
Node.js 项目中的崩溃和隐蔽错误,往往不是来自语法本身,而是来自异步边界、模块缓存、流背压、环境类型和依赖结构。fs.readFileSync 会阻塞整个事件循环,未处理的 rejection 在 Node 15+ 中可能直接终止进程,process.env 始终是字符串,require() 缓存和循环依赖也会让对象共享变得不可见。
技能如何工作
该技能按主题组织快速参考:async.md 覆盖回调、Promise、async/await 与事件循环;modules.md 比较 CommonJS 与 ESM;errors.md 处理未捕获异常;streams.md 关注 Readable、Writable、Transform 与 backpressure;performance.md 看内存泄漏、事件循环阻塞和 profiling;security.md 覆盖输入校验、依赖与环境变量;testing.md 讲 Jest/Mocha、mock 和集成测试;packages.md 处理 npm、package.json、lockfiles 与发布。核心是围绕常见陷阱给出工程化约束:优先使用 fs.promises.readFile,对 JSON.parse 使用 try/catch,用 pipeline() 替代 .pipe(),在 ESM 中使用 fileURLToPath(import.meta.url)。
适用边界
它适合已有 Node.js 服务或库的排障、评审和重构。该技能不提供业务架构决策,也不替代完整测试环境;对 ESM/CJS 混合、多进程、容器化网络等场景,需要结合项目依赖和运行时版本判断。
使用场景
- 评审 Node.js 接口时发现 `fs.readFileSync` 阻塞事件循环,需要改成 `fs.promises.readFile` 并补错误处理。
- 排查 Node 15+ 服务因未处理 rejection 退出,定位缺少 `catch` 或 `try/catch` 的 Promise 链。
- 重构数据管道,把 `.pipe()` 换成 `pipeline()`,处理 `Readable`、`Transform` 的背压与清理。
- 整理 ESM/CJS 混用报错,处理 `__dirname` 缺失、`require()` 缓存和循环依赖问题。
适合人员
- 负责 Node.js 后端服务的工程师,需要在代码评审时快速核对异步、错误和流处理陷阱。
- 维护数据管道或网关中间件的开发者,需要处理 `Readable`、`Transform` 的背压与资源清理。
- 接手 ESM/CJS 混用仓库的前端或全栈工程师,需要定位模块加载、`__dirname` 和缓存问题。
- 准备 Jest/Mocha 测试与 npm 发布的 Node.js 贡献者,需要覆盖 mock、集成测试和包管理细节。