Мало информации, у меня есть файл arp.js, который берет адрес подсети "192.168.2" и получает все строки, возвращаемые из arp -a, и сохраняет их в массиве.
Я не могу понять,почему моя функция arpList возвращает неопределенное значение в моем файле index.js.
Все console.logs возвращают правильные значения на странице arp.js при вызове из index.js, но ipObjподойдя не определено.Даже console.log до моего возвращения ipObj работает.
Любая помощь будет принята с благодарностью.
var { spawn } = require('child_process');
const arpLs = spawn('arp', ['-a']);
var bufferData;
module.exports = {
arpList: function (subnet) {
arpLs.stdout.on('data', data => {
bufferData += data
})
arpLs.stderr.on('data', data => {
console.log('error: ' + data);
});
arpLs.on('exit', function (code) {
if (code != 0) {
console.log("Error exiting"); //if error occurs
}
console.log("exit start 1"); // checking internal processes at stages
var dataArray = bufferData.split(' ');
var ipArray = [];
for (i = 0; i < dataArray.length; i++) {
if (dataArray[i].includes(subnet)) {
ipArray.push(dataArray[i]);
console.log("loop working");
}
}
var ipObj = { "lanIps": ipArray };
console.log("Object is there: "+ipObj)
return ipObj; // this obj should be returned to the index.js call using
})
},
sayMyName: function () {
return "Hello";
}
}
//arpList(ipSubnet);
//INDEX.js
//the index page looks like this
//var arp = require('./arp.js);
//var ipSubnet = "192.168.2";
//var lanIps = arp.arpList(ipSubnet);
//console.log(lanIps);
В итоге я добавил функцию обратного вызова в arpList-function (подсеть, callback)
Затем, вместо возврата значения, передайте его в обратный вызов
Затем на стороне index.js вместо
var lanIps = arp.arpList(value)
я использовал
arp.arpList(value, function(res){lanIps = res}