У меня есть функция для получения последней резервной версии сетевого узла. Для этой функции дан список узлов (пример значения: TEST GROUP WLAN / SW4912), затем для получения последней версии резервной копии необходимо сделать запрос на получение json, а URL должен быть похож на " http://localhost/node/version?node_full=TEST%20GROUP%20WLAN / SW4912 & format = json "Я пытаюсь заменить строку, и она работает, но когда скрипт пытается сделать запрос, мне возвращается, который не может прочитать свойство 'replace' из undefined.
Что происходит?
Ошибка стека:
TEST GROUP WLAN/SW4912
1: TEST GROUP WLAN/SW4912
2: TEST%20GROUP%20WLAN/SW4912
http://localhost/node/version?node_full=TEST%20GROUP%20WLAN/SW4912&format=json
1: undefined
/tmp/relatorio/relatorio.js:28
string = string.toString().replace(/\s/gi, "%20");
^
TypeError: Cannot read property 'toString' of undefined
at getLastVersion (/tmp/relatorio/relatorio.js:28:18)
at Request._callback (/tmp/relatorio/relatorio.js:43:18)
at Request.self.callback (/tmp/relatorio/node_modules/request/request.js:185:22)
at Request.emit (events.js:223:5)
at Request.<anonymous> (/tmp/relatorio/node_modules/request/request.js:1161:10)
at Request.emit (events.js:223:5)
at IncomingMessage.<anonymous> (/tmp/relatorio/node_modules/request/request.js:1083:12)
at Object.onceWrapper (events.js:312:28)
at IncomingMessage.emit (events.js:228:7)
at endReadableNT (_stream_readable.js:1185:12)
Это мой код (Использование nodejs):
const Request = require('request');
const url = 'http://localhost/nodes?format=json';
Request.get({
url: url,
json: true,
headers: {'User-Agent': 'request'}
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
getLastVersion(data);
}
});
function getLastVersion(data){
var string = data[0].full_name;
//string = string.replace(/\s/g, "%20");
console.log("1: "+string);
string = string.toString().replace(/\s/gi, "%20");
console.log("2: "+string);
var url = `http://localhost/node/version?node_full=${string}&format=json`;
console.log(url); // until here the function works!
Request.get({
url: url,
json: true,
headers: {'User-Agent': 'request'}
}, (err, res, data) => {
if (err) {
console.log('Error:', err);
} else if (res.statusCode !== 200) {
console.log('Status:', res.statusCode);
} else {
//console.log(data);
getLastVersion(data)
}
});
}
Спасибо за помощь!