Node.js Nodejs中的函数

Node.js Nodejs中的函数,node.js,express,Node.js,Express,我是Nodejs新手,正在试图弄明白为什么调用函数时不能将函数的返回值传递到函数中。这是我的密码: const SpotifyWebApi = require('spotify-web-api-node'); const http = require("http"); const request = require('request'); const querystring = require('querystring'); const { post } = require(

我是Nodejs新手,正在试图弄明白为什么调用函数时不能将函数的返回值传递到函数中。这是我的密码:

const SpotifyWebApi = require('spotify-web-api-node');
const http = require("http");
const request = require('request');
const querystring = require('querystring');
const { post } = require('request');
const express = require('express');
const { response } = require('express');
const https = require('follow-redirects').https;


//sets express server vars
const app = express()
const port = 8080

app.get('/', (req, res) => {
  res.send('Server Connected')
})

app.listen(port, () => {
  console.log(`Now serving on ${port} at ${process.env.URI} `)
})


require('dotenv').config();


//authenticate to SpotifyAPI
var spotifyApi = new SpotifyWebApi({
  clientId: process.env.CLIENT_ID,
  clientSecret: process.env.SECRET_ID,
  redirectUri: process.env.URI,
});

const scope = 'user-read-private user-read-email ';
const authUrl = 'https://accounts.spotify.com/api/token?grant_type=client_credentials';

//Headers needed to auth to SpotifyAPI for Bearer token
const tokenHeaders = {
  'Authorization': process.env.ACCESSTOKEN,
  'Content-Type': 'application/x-www-form-urlencoded',

};


//spotify Auth Payload
const options = {
  'method': 'POST',
  'url': authUrl,
  'headers': tokenHeaders
};


function accessTokenAuth(bearerToken){
    request(options,  (error, response) => {
    if (error) throw new Error(error);
    const accessTokenBody = response.body;
    // console.log(accessTokenBody)
    // console.log(request)
    const obj = JSON.parse(accessTokenBody);
    const bearerToken = ("Bearer " + obj.access_token); //add this bearerAuth part to a function to make it repeatable. Times out in 3600???
    // console.log(bearerToken);
    return bearerToken;
});
}
//Add first playlists request using the bearer token

accessTokenAuth(bearerToken);
在函数“accessTokenAuth”中,我创建了一系列调用,这些调用基本上将来自上述词典的数据发布到一个函数中,然后该函数将数据发送到URL以接收回令牌。我的问题是,在函数的底部,当我返回“bearerToken”时,为什么当我在第67行调用它时,我不能将“bearerToken”传递到函数中。另外,当我调用函数并运行程序时,当我在函数中console.log它时,它会打印出“bearerToken”。为什么这是可能的?除非调用该函数,否则您不能访问它吗?
谢谢大家!

如果需要继续的唯一数据是“BealerToken”,我必须这样做吗?你能向我解释一下你所说的“请求”部分是什么吗?显然,我写了它,知道它做什么,但是,仅仅返回特定的数据就足够了吗?例如,如果console.log(bearerToken),它将打印数据。如果调用函数accessTokenAuth();它将再次打印承载令牌。还有,我怎么才能把你说的那个角色还给你呢?好的,完全得到那个角色。但是,当我返回BealerToken并在函数外部记录它时,它会说它未定义。如果需要继续的唯一数据是“BealerToken”,我必须这样做吗?你能解释一下你所说的“请求”部分是什么吗?显然,我写了它,知道它做什么,但是,仅仅返回特定的数据就足够了吗?例如,如果console.log(bearerToken),它将打印数据。如果调用函数accessTokenAuth();它将再次打印承载令牌。还有,我怎么才能把你说的那个角色还给你呢?好的,完全得到那个角色。然而,当我返回bearerToken并在函数外部记录它时,它会说它是未定义的。