【发布时间】:2013-07-26 23:36:54
【问题描述】:
我正在解析一个 smil (xml) 文件以获取路径名列表。解析进行得很顺利,并且存储在一个巨大的文字对象中。
但是当我尝试取回信息时,我只得到:
/home/pi/RaspberryPiTV-master/app.js:158
Playlist.push(smil.playlist.video[i].src);
^
TypeError: Cannot read property 'undefined' of undefined
at /home/pi/RaspberryPiTV-master/app.js:158:46
at /home/pi/RaspberryPiTV-master/app.js:321:39
at Object.oncomplete (fs.js:93:15)
代码如下:
var smil={}, i=0;
Playlist=[];
parse("/home/pi/test.smil", function (parsed){
smil=parsed;
console.dir(util.inspect(smil, false, null));
do
{
Playlist.push(smil.playlist.video[i].src);
i=i+1;
}while(i<smil.playlist.video.length-1);
...
}
函数解析(路径名,回调)非常庞大,但它确实有效,因为它的打印确实有效:
{
stream:
[
{ name: 'Stream1' }
],
playlist:
[
{ video:
[
{ src: 'L.mp4', start: '5', length: '5' },
{ src: 'SW.mp4', start: '50', length: '5' },
{ src: 'HN.mp4', start: '150', length: '5' }
],
name: 'pl1',
playOnStream: 'Stream1',
repeat: 'true',
scheduled: '2013-07-23 11:00:00'
}
]
}
我错过了什么吗?我只是不明白为什么我得到了 undefined ,因为我确实得到了正确的打印。
【问题讨论】:
-
变量
i和smil.playlist.video都是undefined。将var i放在更靠近while 循环的位置。 (在解析回调中) -
我怎么是未定义的?不是和smil同时声明的吗?
-
我不知道,
i是全局定义的,所以谁知道它在哪里。运行此回调时为undefined。 -
好点,在让我发帖的那个之后确实引起了另一个错误
-
@dda 感谢您纠正错字
标签: javascript arrays node.js object