繁体   English   中英

NodeJS 在引导 csv 文件后崩溃

[英]NodeJS crashes after sometime of leading a csv file

我一直在研究一个在读取 csv 时输出 xml 的项目,我使用fs.createReadStream()方法读取 csv 文件,但过了一段时间,终端就崩溃了。

我得到

C:\Users\username\Documents\Programming\Node Projects\DAE Parser\main.js:13
      row["Value"].includes("tri") ||
                   ^

TypeError: Cannot read property 'includes' of undefined

它不会读取整个文件。

这就是我正在做的

fs.createReadStream("test.csv")
  .pipe(csv())
  .on("data", row => {
    if (
      row["Value"].includes("tri") ||
      row["Value"].includes("vt") ||
      row["Value"].includes("vx") ||
      row["Value"].includes("vn")
    ) {
      console.log(row)
    }
  })

您的row["Value"]未定义,您可以添加一个条件来检查它是否为假

fs.createReadStream("test.csv")
  .pipe(csv())
  .on("data", row => {
    if (row["Value"] && (
      row["Value"].includes("tri") ||
      row["Value"].includes("vt") ||
      row["Value"].includes("vx") ||
      row["Value"].includes("vn")
    )) {
      console.log(row)
    }
  })

在以下情况下,您的代码很容易受到攻击:

  1. row不是 object
  2. row["Value"]不存在或不是数组。

如果您想在任何特定行中完全安全地对抗这些,那么您可以这样做:

fs.createReadStream("test.csv")
  .pipe(csv())
  .on("data", row => {
    if (typeof row === "object") {
      let arr = row.Value;
      if (arr && Array.isArray(arr) && (
        arr.includes("tri") ||
        arr.includes("vt") ||
        arr.includes("vx") ||
        arr.includes("vn")
      )) {
        console.log(row);
      }
   }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM