2016-05-15 3 views
0

Я пытаюсь использовать this Пакеты NPM в Meteor 1.3.2.4. Он использует eventemitter в функциях и имеет асинхронные обратные вызовы. Я стараюсь, чтобы преобразовать его в синхронное выглядящий с Meteor.bindEnvironment на основе this guide article, как показано ниже:Ошибка: ETIMEDOUT при использовании NPM в Meteor

Meteor.methods({ 
    proxyFetcher() { 
     console.log("OK run"); 
     var options = { 
      protocols: ['http'], 
      anonymityLevels: ['elite'], 
      sourcesBlackList: ['bitproxies', 'kingproxies'] 
     }; 

    var gettingProxies = ProxyLists.getProxies(options); 
    Proxies.remove({}); 

    gettingProxies.on('data', Meteor.bindEnvironment(function(proxies) { 
     console.log(proxies.length); 
     proxies.forEach((proxy) => { 
      Proxies.insert({proxy: proxy.ipAddress + ":" + proxy.port}); 
     }); 
     // Received some proxies. 
    })); 
} 
} 

но это мой выход:

I20160515-12:08:02.579(4.5)? OK run 
I20160515-12:08:03.250(4.5)? 44 
I20160515-12:08:03.645(4.5)? 29 
I20160515-12:08:03.963(4.5)? 35 
I20160515-12:08:04.376(4.5)? 349 
I20160515-12:08:04.711(4.5)? 337 
I20160515-12:08:05.071(4.5)? 350 
I20160515-12:08:05.853(4.5)? 330 
I20160515-12:08:06.149(4.5)? 323 
I20160515-12:08:06.443(4.5)? 331 
I20160515-12:08:06.737(4.5)? 324 
I20160515-12:08:07.039(4.5)? 334 
W20160515-12:08:08.083(4.5)? (STDERR) 
W20160515-12:08:08.084(4.5)? (STDERR) Error: ETIMEDOUT 
W20160515-12:08:08.085(4.5)? (STDERR)  at [object Object]._onTimeout (/home/cyc/Programming/Projects/proxyCheck/Sources/node_modules/proxy-lists/node_modules/request/request.js:762:15) 
W20160515-12:08:08.085(4.5)? (STDERR)  at Timer.listOnTimeout [as ontimeout] (timers.js:121:15) 
=> Exited with code: 8 
=> Meteor server restarted 

Как вы видели сервер перезагружен и мой код возврата ошибки после некоторой итерации , В чем проблема и как правильно использовать этот пакет с Meteor.

ответ

1

Предположительно, один из HTTP-запросов, сделанных прокси-списками, терпит неудачу, и эта ошибка не открывается, поэтому она пузырится, чтобы разрушить весь процесс узла.

Если обработать ошибку, которая должна предотвратить его от сбоя процесса:

gettingProxies.on('error', function(error) { 
    // Some error has occurred. 
    console.error(error); 
}); 
+0

Он работал человек. Спасибо за внимание. – b24