Javascript require函数返回的数据未定义(Js、NodeJs、Discord.Js)
在同一文件夹中,我有3个不同的文件,内容如下: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('./
•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不知道这是一个需要回调的异步函数。。。没有明确地说。