2016-08-24 1 views
0

In meinem ersten Skript führe ich eine Funktion aus, die den HTML-Code von einer Webseite übernimmt. Ich mag diesen HTML-Code in einem anderen Skript verwenden, aber die Rückkehr immer als undefiniert zurück kommt ...So exportieren Sie eine Variable, die durch eine Anfrage in node.js erstellt wurde

var html; 
exports.html = html; 

exports.makeRequest = function makeRequest(url){ 
     request({ 
     url: url, 
     auth: { 
      user: '*****', 
      pass: '*****' 
     }, 
     rejectUnauthorized: false, 
    }, function (error, response, body) { 
     if (!error && response.statusCode === 200) { 
      html = body.toString(); 
      exports.html = html; 
     } 
    }); 
} 

Ich habe versucht, einen weltweit die Variable zu machen, aber ohne Erfolg.

Dies ist der Code, den ich verwende, um den HTML-Code aufzurufen.

var myRequests = require('./Request'); 

console.log(myRequests.makeRequest(url)) 

console.log(myRequests.html); 
+0

Die üblichen Probleme mit asynchronen Methoden. Lesen Sie Rückrufe und/oder Versprechen, um Ihr Problem zu lösen. – Sirko

Antwort

2

Das Senden einer Anfrage ist eine asynchrone Operation. Das bedeutet, dass Sie warten müssen, bis die Anforderung abgeschlossen ist, und die Daten dann über einen Rückruf abrufen.

exports.makeRequest = function makeRequest(url, cb) { 
    request({ 
     url: url, 
     auth: { 
     user: '*****', 
     pass: '*****' 
     }, 
     rejectUnauthorized: false, 
    }, function(error, response, body) { 
     if (error) { 
     return cb(er); 
     } 
     if (response.statusCode !== 200) { 
     return cb(new Error('Request failed with code ' + response.statusCode)); 
     } 
     cb(null, body.toString()); 
    }); 
    } 
    //usage 
var myRequests = require('./Request'); 

myRequests.makeRequest(url, function(er, html) { 
    if (er) { 
    return console.log(er); 
    } 
    console.log(html); 
}); 
Verwandte Themen