Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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 “如何修复”;“未定义”;使用readFile将文件读入数组时使用数组_Javascript_Node.js_Ecmascript 6_Fs - Fatal编程技术网

Javascript “如何修复”;“未定义”;使用readFile将文件读入数组时使用数组

Javascript “如何修复”;“未定义”;使用readFile将文件读入数组时使用数组,javascript,node.js,ecmascript-6,fs,Javascript,Node.js,Ecmascript 6,Fs,我正在尝试将文本文件中的文件名列表加载到js数组中 我尝试使用fs模块来实现这一点,虽然我可以在readFile函数中成功打印数组,但如果我返回数组并尝试在外部打印它,我就无法这样做 const fs = require("fs"); function parseFileList(fileToRead){ fs.readFile(fileToRead, 'utf8', (err, data) => { if (err) throw err; con

我正在尝试将文本文件中的文件名列表加载到js数组中

我尝试使用fs模块来实现这一点,虽然我可以在readFile函数中成功打印数组,但如果我返回数组并尝试在外部打印它,我就无法这样做

const fs = require("fs");
function parseFileList(fileToRead){

    fs.readFile(fileToRead, 'utf8', (err, data) => {
        if (err) throw err;
        const textByLine = data.split("\n").slice(0,-1);
        return textByLine;
    });
}

const refList = parseFileList(argv.ref);
console.log(refList);

文件中的文件名应输出为字符串数组。但现在它只打印未定义的
。我认为这与readFile是异步的这一事实有关,但我不确定如何解决它。

使用
readFileSync
会容易得多,因为名称中的
Sync
表示它是一个同步操作:

function parseFileList(fileToRead) [
  const textByLine = fs.readFileSync(fileToRead, "utf8").split("\n").slice(0, -1);
  return textByLine;
}

这是因为您在回调中得到响应。如果要使此功能正常工作,必须将其转换为承诺:

function parseFileList(fileToRead){
    return new Promise((resolve, reject) => {
     fs.readFile(fileToRead, 'utf8', (err, data) => {
        if (err) reject(err);
        const textByLine = data.split("\n").slice(0,-1);
        return resolve(textByLine);
     });
    })

}
现在您可以像这样使用它:

parseFileList(filename).then(data => console.log(data))

您需要将
let data=await
放在
async
函数中,使用
let
执行此操作意味着无法在函数外部访问它。谢谢,删除了await函数。