- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
' of undefined"即使已定义-6ren"> ' of undefined"即使已定义-我在 NodeJS 上遇到了一个非常奇怪的 Javascript 错误。 我有一个巨大的 data.json 文件 (24MB)。我通过阅读它 var data = JSON.parse(fs.rea-6ren">
我在 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/
我有一些代码将一个对象分配给一个通用 id 变量,然后根据该对象所属的类执行各种操作(假设每个类都正确定义并实现了适当的属性): id obj = ## id result; if ([obj cla
我正在试用 jsRender。 我想做的事情: JS 模板: {{* if ("{{=theaterId}}" == getCurrentTheaterId()) {
我正在学习如何使用 react-native(Android)实现 Firestore。然后,我找到了 'react-native-firebase' 并陷入了这个异常。 Error:Exceptio
假设我们有这段代码(简化示例): $propertyName = 'items'; $foo = new \stdClass; $foo->$propertyName = array(42); 此时我
我正在尝试从子组件向父组件发出事件。 家长: parent .ts onChangeUpload(event){ console.log('event'); console.log(event
我想获取 JSON 数据,将其存储在状态中,然后通过 props 将其传递给组件。在我想使用 map 函数的组件中,它向我显示了这个错误:类型错误:this.props.dataQueries.map
我的@Output 有问题,或者至少父组件中的事件有问题。父级 HTML: Accountmanagement Add Employee Username E-Mail
我在 NodeJS 上遇到了一个非常奇怪的 Javascript 错误。 我有一个巨大的 data.json 文件 (24MB)。我通过阅读它 var data = JSON.parse(fs.rea
我遇到了一个奇怪的问题。我研究了这个错误,它通常似乎与 @Output 或 EventEmitter 的使用有关,但这里并非如此。 如果我有特定的 polyfill,我的应用程序会出现以下错误: Ty
我需要覆盖 grails.serverURL在运行时无需重新生成应用程序的 WAR 文件。我尝试了各种设置方式 grails.serverURL在 application.properties文件,无
嗨,我最近偶然发现了这个案例,但我不知道发生了什么: 在自调用的匿名函数中,我将对象原型(prototype)扩展为: (function () { Object.defineProperty(Obj
我是一名优秀的程序员,十分优秀!