2017-12-13 4 views
0

ich in auth.js folgenden Code habenundefined Erste von JavaScript-Funktion in NodeJS zurück

let request = require("request"); 


    function getToken(callback) { 

    let options = { method: 'POST', 
     url: 'https://testsite/openid-connect/token', 
     headers: 
     { 
     'content-type': 'application/x-www-form-urlencoded' 
     }, 
     form: 
     { 
     grant_type: 'password', 
     username: 'admin', 
     password: 'password', 
     client_id: '123' 
     } 
     }; 
     request(options, function (error, response, body) { 
     if (error) throw new Error(error); 
     callback(body.access_token); 
    }); 
    } 

module.exports = { 
    getToken, 
}; 

und ich bin die Methode getToken aus einer anderen index.js Datei als

let authServ = require('./auth'); 
const token = authServ.getToken(); 
console.log(token); 

nennen, aber ich Get "undefined" zurückgegeben in Variable "Token" anstelle des eigentlichen Token. Kann mir bitte jemand helfen, wo ich falsch liege?

+0

Sie einen Rückruf senden. benutze es (: –

+0

Ich weiß nicht, was du erwartest. 'getToken()' hat keinen Rückgabewert und die einzige Möglichkeit, Zugriff auf das asynchron abgerufene Token zu bekommen, ist die Verwendung des Callbacks, das die Funktion benötigt. – jfriend00

Antwort

0

Sie haben einen Rückruf an die Funktion

getToken passieren
let authServ = require('./auth'); 
authServ.getToken(function(token) { 
    console.log(token); 
}); 
+0

Dies tut nicht funktioniert nicht, auch nach der Implementierung des obigen Codes. Das Problem ist in der Callback, die in Request-Methode Anruf ist. Wenn der Rückruf außerhalb von Request() Anruf platziert wird, dann bin ich in der Lage, den Wert zurück zu bekommen. – Abhay