javascript - 读取文件 - 未定义文件名 [错误]
问题描述
我对 JavaScript 完全陌生,并且在使用 fs.readFile() 函数时遇到了麻烦。
我需要读取一个文件,并确定我是否必须调用 successFn(当 err boolean 为 false 时)或 errorFn(如果 err boolean 为 true)。
但是,当 I err 为 false 时,我试图调用“提取器”函数作为参数——提取器将读取的数据分离到每个单词中。
我需要调用 fs.readFile,所以我需要使用参数,其中一个参数是 fileName。
评分员将使用他自己的文件测试我的代码,所以我不应该定义文件名,但我被要求定义它(我理解为什么要求我这样做,但我觉得应该有一个解决这个问题的方法。)
此外,JavaScript 语法非常不直观,所以我可能会在语法上犯一些错误,但这是我的代码,请告诉我如何解决我的问题:
function readAndExtractWith(extractor) {
fs.readFile(fileName, 'utf-8', (err, data) => {
if (err) {
errorFn(err);
}
else {
data = extractor();
successFn(data);
}
return extractor;
});
}
解决方案
fileName
未定义,因为您从未定义它。由于您在函数中使用它,因此您需要将变量作为参数传递,在函数内部指定它,或者全局定义它。
var fileName = "stackoverflow.jpg";
// when executing the function pass the fileName parameter
readAndExtractWith(extractor, fileName);
function readAndExtractWith(extractor, fileName) {
fs.readFile(fileName, 'utf-8', (err, data) => {
if (err) {
errorFn(err);
}
else {
data = extractor();
successFn(data);
}
return extractor;
});
}
推荐阅读
- java - 如何使用 Pusher 使用 ClientID 从客户端向服务器发送消息
- robotframework - 如何将屏幕截图从机器人框架发送到报告门户
- apache-spark - 无法从 CDH 6.2 服务器提交 spark 作业
- sql - 如果日期大于则比较 2 列行然后更新“是”否则“否”
- dialogflow-es - 有没有办法让谷歌助手的语音识别更好地识别我的对话流代理中使用的单词?
- c# - ChardinJS 演练不适用于 MVC?
- spring - 如何使用zuul避免zuul中的超时异常
- c# - C#中的符号'new',它有什么用?
- javascript - 防止触发多个点击事件:ReactJS
- ios - 放大/缩小时从未调用过 MKMapView regionDidChange