gpt4 book ai didi

javascript - require 函数返回的数据变得未定义(Js、NodeJs、Discord.js)

转载 作者:行者123 更新时间:2023-12-01 02:34:08 25 4
gpt4 key购买 nike

在同一个文件夹中,我有 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

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

谢谢。

最佳答案

欢迎来到异步世界。异步操作后返回值时需要使用回调或 Promise(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);
});

关于javascript - require 函数返回的数据变得未定义(Js、NodeJs、Discord.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48067769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com