首页 > 解决方案 > 如何从此函数中提取凭证?

问题描述

我正在尝试从这段代码中提取“解析”变量。我的目标是让它在函数之外用作全局变量。现在我将它分配给凭据。如何使用更新的解析信息返回 var 凭据?我正在使用 node.js 中的 fs 模块来读取我的凭据文件。

现在,当我通过 readcredentials() 调用此代码时,它返回“未定义”;

function readCredentials() {
  var credentials = 2
  fs.readFile('credentials.json', (err, content) => {
    if (err) return console.log('Error loading client secret file:', err);
    var parse = JSON.parse(content);
    parse = credentials;
  });
  return credentials;
}

标签: javascriptmethodsfs

解决方案


这可能是因为回调是异步的。即,当回调处理数据时,它会向下移动并返回其当前credentials2。执行必须等待凭证的值准备好。
更清晰的处理方法是使用 promise。

const fs = require("fs");

function readCredentials() {
  return new Promise((resolve, reject)=>{
    fs.readFile('credentials.json', (err, content) => {
      if (err) return reject('Error loading client secret file:', err);
      return resolve(JSON.parse(content));
    });
  });
}

readCredentials()
  .then(res=>{
    console.log("Res:", res)
  })
  .catch(err=>{
    console.log("Error:", err);
  })

推荐阅读