Ошибка node.js (dgram.js) выбросить новый TypeError("Первый аргумент должен быть объектом буфера.");

Я разработал сервер для Intel Galileo в nodejs, который отлично работает на nodejs для Windows.

Проблема в том, когда я пытался запустить его в Intel Galileo. Это дает мне эту ошибку:

dgram.js:248
    throw new TypeError('First argument must be a buffer object.');
          ^
TypeError: First argument must be a buffer object.
    at Socket.send (dgram.js:248:11)
    at Socket.<anonymous> (/media/mmcblk0p1/Server/server2.js:21:12)
    at Socket.g (events.js:180:16)
    at Socket.EventEmitter.emit (events.js:92:17)
    at startListening (dgram.js:141:10)
    at dgram.js:216:7
    at dns.js:72:18
    at process._tickCallback (node.js:415:13)
    at Function.Module.runMain (module.js:499:11)
    at startup (node.js:119:16)

код, где появляется ошибка:

var dgram=require("dgram");
var udpServer=dgram.createSocket("udp4");
udpServer.bind(8888, function(){
    udpServer.setBroadcast(true);
    udpServer.send("HIA",0,3,8888,"255.255.255.255",function(err){if(err)console.log(err)});
});

Я пытаюсь отправить широковещательное сообщение с текстом "HIA", но, похоже, ему нужен буфер в качестве параметра. Это не то, что говорит API...

Я думаю, проблема в том, что Intel Galileo имеет другую версию Node, но я пытался обновить ее безуспешно.

1 ответ

Решение

Так что используйте Buffer вместо:

var message = new Buffer('HIA');
udpServer.send(message, 0, message.length, ...)
Другие вопросы по тегам