Node.js 在 setinterval 中使用长间隔时崩溃

Node.js crashes when using long interval in setinterval

function createSasTokenTimer() {    
    console.log("Hello");
}

setInterval(createSasTokenTimer, 3000000);

我 运行 这段代码,50 分钟后我收到以下错误:

Hello
timers.js:265
    callback.apply(this, args);
            ^
TypeError: Cannot read property 'apply' of undefined

    at wrapper [as _onTimeout] (timers.js:265:13)
    at Timer.listOnTimeout (timers.js:110:15)

当间隔时间较短时(例如2000000),一切正常。

这是 Node.js 中的错误吗?


更新:

OS: Windows, Node.js 版本: 0.12.4

当我 运行 只有上面的代码工作正常,但当它在我的应用程序中时它确实中断了,我无法指出我的代码的哪一部分中断了它,因为它很长而且看起来什么也没有"suspicious"。无论如何,当间隔较短时,它会像我写的那样工作。

对我来说,这看起来像是您使用的非标准模块,而不是本机模块。看看 global.process.moduleLoadList 它应该有条目

 'NativeModule timers',
 'Binding timer_wrap',

并检查您的代码,您没有导入第 3 方 timers.js

不要直接调用函数,而是在回调中给它赋值。

function createSasTokenTimer() {    
  console.log("Hello");
}

setInterval(function(){
 createSasTokenTimer();
}, 3000000);

使用此方法,您将匿名函数传递给 setInterval。它将在每个时间间隔调用此函数一次,在此示例中为 3000000 毫秒。

目前,您可以只使用此代码。为了进一步理解,我建议研究匿名函数和闭包。

希望对您有所帮助。