NodeJS 在引导一个 csv 文件后崩溃
Posted
技术标签:
【中文标题】NodeJS 在引导一个 csv 文件后崩溃【英文标题】:NodeJS crashes after sometime of leading a csv file 【发布时间】:2020-02-29 20:06:47 【问题描述】:我一直在做一个在读取 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"]
不存在?
据我了解,每一列都有一个
IMO,这有两个原因。 1. row["Value"]
的值不存在。 2. row["Value"]
的值既不是字符串也不是数组。它是别的东西。
【参考方案1】:
你的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)
)
【讨论】:
【参考方案2】:您的代码在以下情况下容易受到攻击:
row
不是对象
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);
)
【讨论】:
@himanshusardana - 这回答了你的问题吗?如果是这样,您可以通过单击答案左侧的复选标记在此处向社区表明这一点。这也将为您在 *** 上赢得一些声誉点,以遵循正确的程序。如果这没有回答您的问题,请评论您仍然对问题的哪一部分感到困惑。以上是关于NodeJS 在引导一个 csv 文件后崩溃的主要内容,如果未能解决你的问题,请参考以下文章