' of undefined"即使已定义-6ren"> ' of undefined"即使已定义-我在 NodeJS 上遇到了一个非常奇怪的 Javascript 错误。 我有一个巨大的 data.json 文件 (24MB)。我通过阅读它 var data = JSON.parse(fs.rea-6ren">
gpt4 book ai didi

javascript - "Cannot read property of ' ' of undefined"即使已定义

转载 作者:搜寻专家 更新时间:2023-11-01 00:02:58 24 4
gpt4 key购买 nike

我在 NodeJS 上遇到了一个非常奇怪的 Javascript 错误。

我有一个巨大的 data.json 文件 (24MB)。我通过阅读它

var data = JSON.parse(fs.readFileSync("./data.json", 'utf8'));

但是,在脚本执行期间的某个时刻,我尝试访问,例如,

data['someProp']['prop1']

它引发了一个类型错误:

TypeError: Cannot read property 'prop1' of undefined

真的很奇怪,因为data, data['someProp'], data['someProp']['prop1']是全部定义。

如果我这样做

console.log(data['someProp']['prop1']);

它在屏幕上正确显示 data['someProp']['prop1'] 的值并立即引发类型错误。

什么可能导致这种奇怪的行为?解决此类问题的任何猜测或提示?


更新:

让我更清楚一点。我觉得很奇怪,因为如果我把

console.log(data['someProp']['prop1']);

在引发错误的正上方的行中,它正确地打印出值并立即引发错误。

假设 data['someProp']['prop1'] = "someProp value"

那么这是错误日志。

someProp value

console.log(data['someProp']['prop1']);
^

TypeError: Cannot read property 'prop1' of undefined

如果我这样做

console.log(data['someProp'])

然后这是我得到的日志:

{
...
"someProp": {
"prop1": "someProp value"
},
...
}
undefined

这是我感到困惑的部分。当我对它进行 console.log 时,它会打印出 data['someProp'] 的内容,紧接着是 undefined。什么会导致这种情况?

另一个奇怪的事情是

console.log(typeof data['someProp']);

结果是:

object
undefined

data['someProp'] 如何既是对象又是 undefined

最佳答案

好的,我会回答我自己的问题并关闭这个问题。

正如 user1689607 所猜测的,我的异步代码存在错误。例如,我的代码如下所示:

function test(done) {
...
if (err) {
done();
}
...
if (data['someProp']['prop1']) {
...
done();
}
}

由于第一个 done() 被调用而没有返回,我认为它在回调执行结束时返回并遍历其余代码,这是不应该的。在此期间,数据发生了一些变化,这就是导致错误的原因。

所以 return done(); 解决了这个问题。

感谢@user1689607。

关于javascript - "Cannot read property of ' <propName> ' of undefined"即使已定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13708318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com