簡體   English   中英

遞歸process.nextTick警告

[英]Recursive process.nextTick warning

作為我的應用程序的一部分,我具有以下代碼行:

process.nextTick(function() {
  // pre-populate cache with all users
  console.log('scanning users table in order to pre-populate cache');
  tables.users.scan(function(err, users) {
    if (err) {
      console.error('unable to scan users database in order to pre-populate cache');
      return;
    }

    console.log('found %d users in database', users.length);
  });
});

在ubuntu中運行該應用程序給了我

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

RangeError: Maximum call stack size exceeded

在OSX上運行的程序運行良好,完全沒有警告。

兩者都運行相同的節點版本v0.10.24

刪除此代碼塊即可解決問題。 我試圖弄清楚這里發生了什么。

嘗試使用--trace-deprecation標志運行節點顯示

Trace: (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
    at maxTickWarn (node.js:377:17)
    at process.nextTick (node.js:480:9)
    at onwrite (_stream_writable.js:260:15)
    at WritableState.onwrite (_stream_writable.js:97:5)
    at WriteStream.Socket._write (net.js:651:5)
    at doWrite (_stream_writable.js:221:10)
    at writeOrBuffer (_stream_writable.js:211:5)
    at WriteStream.Writable.write (_stream_writable.js:180:11)
    at WriteStream.Socket.write (net.js:613:40)
    at Console.warn (console.js:61:16)
    at Console.trace (console.js:95:8)
    at maxTickWarn (node.js:377:17)

使用--throw-deprecation運行可以

Error: (node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
    at maxTickWarn (node.js:375:15)
    at process.nextTick (node.js:480:9)
    at Cursor.each (/var/www/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:184:13)
    at /var/www/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:191:16
    at Cursor.nextObject (/var/www/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:540:5)
    at /var/www/node_modules/mongojs/node_modules/mongodb/lib/mongodb/cursor.js:187:12
    at process._tickCallback (node.js:415:13)

任何幫助,不勝感激。

10倍

事實證明,問題出在我的應用程序mongojs使用的模塊mongojs 該問題在模塊的更高版本中得以解決,我只需要更新package.json

賈米斯·查爾斯( node --throw-deprecation app.js Charles)關於使用node --throw-deprecation app.js (或--trace-deprecation )運行我的應用程序的評論向我展示了導致我進入罪魁禍首模塊的錯誤的堆棧跟蹤。

我仍然不確定為什么問題在Ubuntu上而不是在MBA上出現...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM