NodeJS の Javascript で本当に奇妙なバグに遭遇しました。
巨大な data.json ファイル (24MB) があります。経由で読んだ
var data = JSON.parse(fs.readFileSync("./data.json", 'utf8'));
ただし、スクリプト実行中のある時点で、たとえば、
data['someProp']['prop1']
型エラーが発生します。
TypeError: 未定義のプロパティ 'prop1' を読み取ることができません
、 、がすべて定義されているため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
か?