Невозможно вернуть значения в другой файл JS, даже используются экспорт и требуют - PullRequest
0 голосов
/ 01 ноября 2018

Я использую модуль запроса для возврата значений. {code}

var token;
const request = require('request');
const authKey='Bearer <APPKEY>'
const ContentType='application/x-www-form-urlencoded' ;
var postData={
    'grant_type':'client_credentials'
};
const options = {
    url: '<m/c detils>',
    method: 'POST',
    headers: {
        'Content-Type': ContentType,
        'Authorization':authKey
    },
    body:require('querystring').stringify(postData)
};

module.exports.getAccessToken=request(options, function(errror, response, body){
    console.info("Token is caling");
    // body...


        console.info("inside request module----------------------",JSON.parse(body));
        console.info("response details---------------------",response);
        token= JSON.parse(body).access_token;
       console.info("token1---------------------",token);
       return token;


   })
)

{код}

Здесь я могу вернуть значение для токена, но то же самое, если я хочу использовать в другом файле например:

var token = authtoken.getAccessToken;

Я получаю значение как неопределенное, я сделал

var authtoken = require ('./ utils / Utils.js');

Пожалуйста, помогите мне здесь

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Поскольку 'request' является асинхронным, вам необходимо изменить код

// file 1
module.exports.getAccessToken = function (cb) {
    request(options, function(errror, response, body) {
        /**
         * do something
         */
        return cb(body.access_token)
    })
}

// file 2
const file1 = require('file1')

file1.getAccessToken(function (token) {
    // ..
})

Кроме того, если вы передадите json: true в параметрах запроса, он передаст вам данные json в ответ

0 голосов
/ 01 ноября 2018

Решение, предоставленное iyerrama29 , подойдет. Но вы можете использовать Promise и здесь. Проверьте ниже ссылку о том, как использовать Promise здесь.

Запрос на обещание Node.js возврат

0 голосов
/ 01 ноября 2018

Ваш getAccessToken экспорт не экспортирует функцию, он экспортирует результат запроса, который, как прокомментировал Пол, не будет определен.

Я подозреваю, что вы хотели экспортировать функцию, которая вызывает запрос, как это ...

module.exports.getAccessToken = callback => request(options, function(error, response, body) {
   token= JSON.parse(body).access_token;
   callback(token);
});

Конечно, вам нужно обрабатывать ошибки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...