💡 原文英文,约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日发布的修复版本。