Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript require函数返回的数据未定义(Js、NodeJs、Discord.Js)_Javascript_Node.js_Fs_Discord.js - Fatal编程技术网

Javascript require函数返回的数据未定义(Js、NodeJs、Discord.Js)

Javascript require函数返回的数据未定义(Js、NodeJs、Discord.Js),javascript,node.js,fs,discord.js,Javascript,Node.js,Fs,Discord.js,在同一文件夹中,我有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('./

在同一文件夹中,我有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()的结果顺序错误


谢谢。

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

使用回调函数的方式如下:

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

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

使用回调函数的方式如下:

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

Tahnks,不知道这是一个需要回调的异步函数。。。Tahnks不知道这是一个需要回调的异步函数。。。没有明确地说。