有没有办法避免这个错误:(节点)警告:递归process.nextTick检测到

时间:2015-08-24 16:19:39

标签: node.js asynchronous amazon-s3

我看到围绕这个错误的一堆问题,但没有人似乎有一个实际答案,其他海报列出的原因都不适用于我的情况。

当我将一个特别大的文件(50mb或更多)从我的服务器上传到亚马逊的S3时,我已经跟踪了它。在这个过程的某个地方,我得到了几百个实例

(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.

然后最终

var str = String(f).replace(formatRegExp, function(x) {
                      ^
RangeError: Maximum call stack size exceeded

好奇是否有其他人看过这个特定的实例并设法找到解决方案。如果我弄明白的话,我明显会发一个作为答案。

1 个答案:

答案 0 :(得分:1)

要实际修复此问题,您必须

  1. 确定导致此问题的代码行。
    • 在您的代码和您的npm依赖项中搜索process.nextTick
    • OR如果您可以在调试器中重现并在节点核心中的代码中设置一个断点来抛出该错误,那么您可以在该点查看堆栈并确定根本原因文件/行。
  2. 将代码更改为使用setImmediate
    • 您的应用程序代码不一定是根本原因,因此您可能需要fork / PR第三方模块