💡
原文英文,约3200词,阅读约需12分钟。
📝
内容提要
Node.js中的一个bug导致使用async_hooks的应用程序在堆栈溢出时崩溃,而非抛出可捕获的错误。这影响了React、Next.js及所有使用AsyncLocalStorage的APM工具。修复已于2026年1月发布,建议用户尽快更新以确保服务可用性。
🎯
关键要点
- Node.js中的一个bug导致使用async_hooks的应用程序在堆栈溢出时崩溃,而非抛出可捕获的错误。
- 该bug影响了React、Next.js及所有使用AsyncLocalStorage的APM工具。
- 修复已于2026年1月发布,建议用户尽快更新以确保服务可用性。
- Node.js尝试从堆栈空间耗尽中恢复,但在使用async_hooks时会导致直接崩溃。
- React Server Components和Next.js使用AsyncLocalStorage进行请求上下文跟踪,因此受到影响。
- APM工具需要跟踪请求的异步上下文,许多工具依赖于async_hooks。
- 修复后的行为使得try-catch块能够捕获RangeError,应用程序可以优雅地处理错误。
- 开发者应对输入进行清理或限制递归深度,以防止Denial-of-Service攻击。
- Node.js 24及以上版本的AsyncLocalStorage不再使用async_hooks.createHook,因此不受此bug影响。
- 建议用户升级到2026年1月13日发布的修复版本。