require函数的返回数据变为undefined(Js,NodeJs,Discord.js)[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

在同一文件夹中,我有3个不同的文件,其中包含以下内容: •index.js

const getToken = require('./getToken.js');
console.log(getToken.getToken());

•getToken.js

const FS = require('fs'); //a library to read files    
module.exports = {
    getToken: function (){
        FS.readFile('./token.txt', 'utf8', function (err, data) {
            if (err) {
                console.error(err);
            } else {
                console.log('Token is : ' + data);
                return data;
            }
        });
    }
}

•token.txt

foo

我正在使用NodeJs,fs,一个库来读取文件和一个Discord库。 我得到输出:

undefined //result of index.js
Token is : foo //result of getToken.js

代码工作正常,只是令牌没有正确地给主js文件(index.js),即使它被正确读取。 这段代码出了什么问题?为什么console.log()的结果是错误的ordrer?

谢谢。

javascript node.js fs discord.js
1个回答
1
投票

欢迎来到异步世界。在异步操作(fs.readFile为async)后返回值时,需要使用回调或promise。

使用回调将是这样的:

module.exports = {
    getToken: function (callback){
        FS.readFile('./token.txt', 'utf8', function (err, data) {
            if (err) {
                callback(err);
            } else {
                console.log('Token is : ' + data);
                callback(null, data);
            }
        });
    }
}


//Other file
const getToken = require('./getToken.js');

getToken.getToken(function(err, result){
  if(err) return console.log(err);
  console.log(result);
});
© www.soinside.com 2019 - 2024. All rights reserved.