2016-08-27 14 views
0

私のコードを以下に実行しようとしていますが、何らかの理由でエラーが出ます。私は失敗した試行で、デバッグに最善を尽くしました!NodeJS実行エラーTypeError:未定義のプロパティ 'host'を読み取ることができません

以下のコードで何が間違っているのかを知る手助けがありますか?

var lastPos = 0; 

function exec_code(){ 
    var fs = require('fs'); 
var child_process = require('child_process'); 
//var lastPos = 0; 

function getFriends() { 
    var friendsList = []; 
    var friends = fs.readFileSync('usernames.txt'); 
    for (friend of friends.toString().split('\n')) { 
     friend = friend.replace('\r', ''); 
     friendsList.push(friend); 
    } 
    return friendsList; 
} 

function getUsers() { 
    var list = getFriends(); 
    var result = list.splice(lastPos, 94) 
    lastPos+=94; 
    return result; 
} 

function getProxList(cb) { 
    var temp = []; 
    fs.readFile('proxies.txt', (err, lines) => { 
     if (err) throw err; 
     for (p of lines.toString().split('\n')) { 
      temp.push({host: p.split(':')[0].replace('\r', ''), port: p.split(':')[1].replace('\r', '')}); 
     } 
     cb(temp); 
    }); 
} 

fs.readFile('accounts.txt', (err, data) => { 
    getProxList(function(proxList) { 


     var timeout = 0; 
     for (line of data.toString().split('\n')) { 
      var prox = proxList[Math.floor(Math.random() * proxList.length) + 1]; 
      var username = line.split(':')[0].replace('\r', ''); 
      var password = line.split(':')[1].replace('\r', ''); 

      //if (prox.host === undefined || prox.port === undefined) { continue; } 

      var usersList = getUsers(); 
      (function(h, p, us, pp, l, t) { 
       setTimeout(function() { // TEST IT 
        console.log('Run: '+us); 
        console.log('L: '+l); 
        child_process.fork('./app.js', [h, p, us, pp, l]); 
       }, t * 1000); // 5 sec 
      })(prox.host, prox.port, username, password, usersList, timeout); 
      timeout+=5; //60 
     } 
    }); 
}); 



// child_process.fork('./app.js', [username, password, friend.replace('\r', '')]); 

} 

exec_code(); 
setInterval(exec_code, 14400000) 

は、エラーの下に私を取得します:

[email protected] ~/X/test/works_Adder_without_delay 
$ node start.js 
C:\cygwin64\home\mzapc\X\test\works_Adder_without_delay\start.js:55 
         })(prox.host, prox.port, username, password, usersList, timeout); 
          ^

TypeError: Cannot read property 'host' of undefined 
    at C:\cygwin64\home\mzapc\X\test\works_Adder_without_delay\start.js:55:11 
    at C:\cygwin64\home\mzapc\X\test\works_Adder_without_delay\start.js:32:9 
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:380:3) 

、 よろしくお願いします。

答えて

0

可変ポートがnullまたは未定義です。 この行を確認してください

var prox = proxList[Math.floor(Math.random() * proxList.length) + 1]; 

編集。

Math.floor(Math.random() * proxList.length) + 1 

は、配列の範囲外になります。ただ、このことができます

var prox = proxList[Math.floor(Math.random() * proxList.length)]; 

希望を行う例えば長さ5の配列の場合には、値5を返すことができます。そして、あなたの後

var prox = proxList[5] <- undefined 

だから修正しようとします。

+0

if(prox.host === undefined || prox.port ===未定義){continue; } ..でも、prox.hostと同じエラーに直面しています。 –

+0

インデックスからprox値を配列から取得しています。だから、あなたのコードが配列の範囲外に出て、nullを返す場合があると思っています。 –

+0

この場合はどうすればいいですか?上記のコードを親切に編集できますか? –

関連する問題