-1
В моем текущем проекте, я чтение данных из TemperatureSensor через Node.js и передавая данные в браузере через веб-сокет. Код Node.js является таким, как показано ниже:Не удается прочитать свойство «испускают» неопределенной (дубликата)
var http = require('http');
var fs = require('fs');
var port = 8686;
var path = require('path');
var mqtt = require('mqtt');
var sock;
var tempValue,humidityValue,sensorMeasurement;
var client = mqtt.connect('mqtt://test.mosquitto.org');
client.subscribe('sensorMeasurement');
client.on('message', function(topic, payload) {
if (topic.toString() == "sensorMeasurement") {
sensorMeasurement = JSON.parse(payload);
tempValue=sensorMeasurement.tempValue;
console.log("temperature value : " + tempValue);
sock.emit('sensorData', { value : tempValue });
}
});
function handleRequest(request, response){
var filePath = path.join(__dirname, 'index.html');
var stat = fs.statSync(filePath);
response.writeHead(200, {
'Content-Type': 'text/html',
'Content-Length': stat.size
});
var readStream = fs.createReadStream(filePath);
readStream.pipe(response);
}
var server = http.createServer(handleRequest);
var io = require('socket.io').listen(server);
server.listen(port, "0.0.0.0", function(){
console.log("Server listening on: http://localhost:%s", port);
});
io.sockets.on('connection', function (socket) {
sock = socket;
});
При запуске выше кода отображает следующие ошибки:
C:\ABB Work\nodeworkspace\Smart Home App\DataVisualizer.js:18
sock.emit('sensorData', { value : tempValue });
TypeError: Cannot read property 'emit' of undefined
at MqttClient.<anonymous> (C:\ABB Work\nodeworkspace\Smart Home App\DataVisualizer.js:18:7)
at emitThree (events.js:97:13)
at MqttClient.emit (events.js:175:7)
at MqttClient._handlePublish (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\lib\client.js:792:12)
at MqttClient._handlePacket (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\lib\client.js:282:12)
at process (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\lib\client.js:238:12)
at Writable.writable._write (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\lib\client.js:248:5)
at doWrite (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\node_modules\readable-stream\lib\_stream_writable.js:237:10)
at writeOrBuffer (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\node_modules\readable-stream\lib\_stream_writable.js:227:5)
at Writable.write (C:\ABB Work\nodeworkspace\Smart Home App\node_modules\mqtt\node_modules\readable-stream\lib\_stream_writable.js:194:11)
носок уже определен как переменные. Я что-то упускаю ?
носка определяется, но не инициализируется. – Eftakhar
@ Eftakhar Должен ли я инициализироваться нулевым значением? или {} ? Не могли бы вы посоветовать мне, как инициализировать носок? –
он должен быть инициализирован, какой eventEmitter что-то вроде var EventEmitter = require ('events'); var sock = new EventEmitter(); – Eftakhar