【问题标题】:Store the content of a file returns null存储文件内容返回null
【发布时间】:2020-12-23 18:59:30
【问题描述】:

我正在尝试将文件的所有内容存储在 allFileData 中,但它始终具有空值 当函数返回时。

我尝试了几件事,但都没有奏效,有什么想法吗?

const linereader = require("line-reader");

async function getFileData(filePath) {
   let allFileData = "";

   await linereader.eachLine(filePath, function (line, last, complete) {
     allFileData += `${line}\n`;
   });

  return allFileData;
}

【问题讨论】:

标签: javascript node.js file


【解决方案1】:

查看 line-reader 的文档:

https://www.npmjs.com/package/line-reader#promises

https://github.com/nickewing/line-reader/blob/master/lib/line_reader.js

你的代码有两个问题:

  1. 函数eachLine 不返回任何内容,因此也不是 Promise。因此,正如 cmets 中所述,await 不会对您的代码执行任何操作,并且您的函数会返回 allFileData 的初始值,它是一个空字符串。 (请注意,您正在使用回调来读取异步行。因此,当您到达 return 语句时,读取还没有完成。)

  2. 如果您指定第三个参数 - complete 在您的情况下,根据上述链接文档,该函数的行为与您预期的不同。此外,由于您没有在回调函数中使用该参数,因此最好省略它。

以下代码将帮助您入门 - 它将每一行打印到控制台。您只需要调整回调函数或将结果转换为链接文档中指出的承诺。

const linereader = require("line-reader");

function getFileData(filePath) {
   linereader.eachLine(filePath, function (line, last) {
    if (last) {
        return false;
    }
     console.log(line);
   });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2022-01-16
    • 2020-11-29
    • 1970-01-01
    • 2020-11-28
    • 2014-08-04
    • 2019-02-05
    相关资源
    最近更新 更多