EventEmitter内存泄漏

我正在使用meteor。 我build立了一个meteor软件包,帮助上传文件到blob存储。 我得到以下错误。 这个错误在5次中只发生一次。

W20141025-15:22:40.195(5.5)? (STDERR) (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. W20141025-15:22:40.546(5.5)? (STDERR) Trace W20141025-15:22:40.546(5.5)? (STDERR) at addListener (events.js:160:15) W20141025-15:22:40.546(5.5)? (STDERR) at /Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/services/storageserviceclient.js:399:31 W20141025-15:22:40.547(5.5)? (STDERR) at /Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/services/storageserviceclient.js:516:5 W20141025-15:22:40.547(5.5)? (STDERR) at SharedKey.signRequest (/Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/signing/sharedkey.js:81:3) W20141025-15:22:40.547(5.5)? (STDERR) at Object.StorageServiceClient._buildRequestOptions (/Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/services/storageserviceclient.js:498:27) W20141025-15:22:40.634(5.5)? (STDERR) at operation (/Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/services/storageserviceclient.js:255:10) W20141025-15:22:40.634(5.5)? (STDERR) at func [as _onTimeout] (/Users/user/boutfeeds/packages/jamesfebin:azure-blob-upload/.build.jamesfebin:azure-blob-upload/npm/node_modules/azure-storage/lib/common/services/storageserviceclient.js:422:11) W20141025-15:22:40.635(5.5)? (STDERR) at Timer.listOnTimeout [as ontimeout] (timers.js:110:15) 

代码在这里

  azureUpload:function(fileName,accountName,key,container,callback) { var buffer = new Buffer(this.data); retryOperations = new azure.ExponentialRetryPolicyFilter(); blobService = azure.createBlobService(accountName, key).withFilter(retryOperations); var blockId = this.blockArray[this.blockArray.length-1]; var stream = new ReadableStreamBuffer(buffer); var self = this; Future = Npm.require('fibers/future'); var myFuture = new Future; blobService.createBlockFromStream(blockId,container,fileName,stream,stream.size(),function(err,response) { if(err) { myFuture.return(); } else if (response) { if (self.bytesUploaded+self.data.length >= self.size) { blobService.commitBlocks(container, fileName, {LatestBlocks: self.blockArray}, function(error, result){ if(error){ myFuture.return(); } else { myFuture.return({url:"https://"+accountName+".blob.core.windows.net/"+container+"/"+fileName}); } }); } else { myFuture.return(); } } }); return myFuture.wait(); } 

你可以在这里查看完整的源代码https://github.com/jamesfebin/azure-blob-upload/blob/master/azureupload.js (向下滚动到azureUpload函数)

节点具有10个事件发射器的默认值。 通过向http服务器发出15个并发请求,可以轻松地实现超载…这可以通过设置process.setMaxListeners(0)来停止。 所以它不会显示错误..更多在这里http://nodejs.org/api/events.html