NodeJS падает после некоторого времени ведения файла CSV - PullRequest
0 голосов
/ 04 ноября 2019

Я работал над проектом, который выводит xml после чтения csv, я использую метод 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)
    }
  })

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Ваш 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)
    }
  })
0 голосов
/ 04 ноября 2019

Ваш код уязвим в случаях, когда:

  1. row не является объектом
  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);
      }
   }
})
...