NodeJS에서 Javascript와 관련된 정말 이상한 버그가 있습니다."정의되지 않은"<propName> '의 속성을 읽을 수 없습니다.
거대한 data.json 파일 (24MB)이 있습니다.
TypeError: Cannot read property 'prop1' of undefined
: 나는 스크립트 실행 중에 어떤 시점에서, 나는
data['someProp']['prop1']
, 예를 들어, 액세스 시도하고 그것이 유형의 오류가 발생,
var data = JSON.parse(fs.readFileSync("./data.json", 'utf8'));
그러나
를 통해 읽어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": {
"prop1": "someProp value"
},
...
}
undefined
이 내가 혼란 스러워요 부분이다 :
someProp value
console.log(data['someProp']['prop1']);
^
TypeError: Cannot read property 'prop1' of undefined
그래서
console.log(data['someProp'])
할 경우,이 내가 얻을 로그입니다. 내가 console.log 할 때 data['someProp']
의 내용을 출력하고 바로 뒤에 undefined
을 출력합니다. 무엇이 이것을 일으킬 수 있습니까?
또 다른 이상한 점은
console.log(typeof data['someProp']);
결과는이다 :
는object
undefined
어떻게 data['someProp']
undefined
뿐만 아니라 객체가 될 수 있습니까?
* "... 스크립트 실행 중 어느 시점에서 ..."글쎄, 열쇠 인 것처럼 보입니다. 그것이'undefined '라고 말하면'undefined'라는 뜻입니다. 정의되기 전에 코드를 실행하거나 속성을 잘못 액세스하고 있습니다. 어느 쪽이든, 귀하가 제공 한 것으로부터 문제를 알 수 없습니다. –
이 질문을 살펴보면 n 레벨의 속성을 호출하는 함수가 있으며 null이면 빈 문자열을 반환합니다. http://stackoverflow.com/questions/13345449/calling-object-properties-in-n-levels-javascript –
@ user1689607 업데이트 된 질문을 볼 수 있습니까? 나는 console.log가 값을 올바르게 표시하고 그것이 정의되지 않았다고 즉시 불평하기 때문에 혼란 스럽다. 이 오류가 data.json 파일의 일부 텍스트 인코딩으로 인해 발생하는지 궁금합니다. 하지만 그건 내 추측입니다. –