【问题标题】:Not able to return values in another js file even export and require are used即使使用了 export 和 require 也无法在另一个 js 文件中返回值
【发布时间】:2019-04-05 21:52:02
【问题描述】:

我正在使用请求模块来返回值。 {代码}

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');

请帮帮我

【问题讨论】:

  • 请求是异步的,它不会返回任何东西。

标签: node.js request


【解决方案1】:

您的 getAccessToken 导出不是导出函数,而是导出请求结果,正如 Paul 评论的那样,它不会被定义。

我怀疑你想要的是导出一个调用请求的函数,像这样......

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

当然,您需要处理错误...

【讨论】:

    【解决方案2】:

    由于“请求”是异步的,因此您需要修改代码

    // 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数据作为响应

    【讨论】:

      【解决方案3】:

      iyerrama29 提供的解决方案很好。但是你也可以在这里使用 Promise。 在此处查看如何使用 Promise 的链接。

      Node.js promise request return

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-26
        • 2016-09-04
        • 1970-01-01
        • 2012-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多