#javascript #node.js #leap-motion
#javascript #node.js #leap-motion
Вопрос:
Вот как я пытаюсь получить определенный элемент из фрейма устройства Leap Motion через WebSocket.
var webSocket = require('ws');
ws = new webSocket('ws://127.0.0.1:6437');
ws.on('message', function(data, flags) {
var frame = JSON.parse(data);
var id = frame.hands;
var pos = id[0];
console.log(pos);
});
Объект JSON выглядит примерно так: Пример фрейма Leap Motion
Я получаю эту ошибку.
Sanjeet-Suhags-MacBook-Pro:LeapJS sanjeetsuhag$ node index.js
/Users/sanjeetsuhag/Developer/Node/LeapJS/index.js:7
var pos = id[0];
^
TypeError: Cannot read property '0' of undefined
at WebSocket.<anonymous> (/Users/sanjeetsuhag/Developer/Node/LeapJS/index.js:7:14)
at WebSocket.emit (events.js:98:17)
at Receiver.self._receiver.ontext (/Users/sanjeetsuhag/Developer/Node/LeapJS/node_modules/ws/lib/WebSocket.js:697:10)
at Receiver.opcodes.1.finish (/Users/sanjeetsuhag/Developer/Node/LeapJS/node_modules/ws/lib/Receiver.js:397:14)
at Receiver.expectHandler (/Users/sanjeetsuhag/Developer/Node/LeapJS/node_modules/ws/lib/Receiver.js:384:31)
at Receiver.add (/Users/sanjeetsuhag/Developer/Node/LeapJS/node_modules/ws/lib/Receiver.js:93:24)
at firstHandler (/Users/sanjeetsuhag/Developer/Node/LeapJS/node_modules/ws/lib/WebSocket.js:673:22)
at process._tickCallback (node.js:419:13)
Что происходит не так? Спасибо.
Ответ №1:
hands
Массив пуст, если руки не обнаружены, просто измените свой код на:
ws.on('message', function(data, flags) {
var frame = JSON.parse(data);
var id = frame.hands;
if (id.length === 0)
return;
var pos = id[0];
console.log(pos);
});