要求函数的返回数据变为未定义(Js,NodeJs,Discord.js)[重复]
Posted
技术标签:
【中文标题】要求函数的返回数据变为未定义(Js,NodeJs,Discord.js)[重复]【英文标题】:Returned data of require function becomes undefined (Js, NodeJs, Discord.js) [duplicate] 【发布时间】:2018-06-12 13:27:10 【问题描述】:在同一个文件夹中,我有 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;
);
• 令牌.txt
foo
我正在使用 NodeJs、fs、一个用于读取文件的库和一个 Discord 库。 我得到了输出:
undefined //result of index.js
Token is : foo //result of getToken.js
代码工作正常,只是令牌没有正确地提供给主 js 文件 (index.js),即使它被正确读取。 这段代码有什么问题?为什么console.log()的结果顺序不对?
谢谢。
【问题讨论】:
【参考方案1】:欢迎来到异步世界。异步操作后返回值时需要使用回调或承诺(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,不知道这是一个需要回调的异步函数...没有明确说明。以上是关于要求函数的返回数据变为未定义(Js,NodeJs,Discord.js)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS(服务器):ReferenceError:当类型:模块时未定义要求