TypeError:无法读取未定义的属性“元素”

时间:2018-12-05 16:48:17

标签: node.js google-distancematrix-api

我目前正在iOS上构建乘车共享应用程序,并且在Node.js代码中使用Google Distance Matrix时遇到了一些问题。

下面是代码:

distance.matrix(leg3_origin, leg3_destination, function (err, distances) {
               console.log('distance');
               if (err) {
                 console.log(err);
                   return console.log(err);
               }
               else if(!distances) {
                 console.log('no distances..');
                   return console.log('no distances');
               }
               else{
                 console.log('if statement');
                   var origin = distances.origin_addresses[0];
                   var destination = distances.destination_addresses[0];
                       leg3Duration = distances.rows[0].elements[0].duration;
                       leg3Distance = distances.rows[0].elements[0].distance;
                       console.log(leg3Distance);

                       if (leg3Distance == null)
                       {
                         leg3Distance = 0;
                       }
                       console.log('entering 2nd leg');
                       getSecondLeg(driverArrivalTime2, leg3Duration, leg3Distance);

                 }
              });

在尝试调用.elements时,行leg3Duration = distances.rows[0].elements[0].duration;导致了错误。

我知道它正在中断,因为leg3Duration是未定义的,但是正在函数中进行初始化。还有什么其他方法可以初始化此值以避免该错误?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您应该console.log距离对象并确认未定义元素。您可能拼错了元素,或者可能需要使用其他属性?

其他想法:

在回调函数中返回的distance对象可能与distance.matrix方法中的文档完全不同。

也许是您传递给distance.matrix方法的问题?

我们很难确定为什么distances.rows [0]不包含您期望的elements属性。您是从官方文档中复制还是手动定义了嵌套属性持续时间的属性路径?