2016-09-07 2 views
-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) 

носок уже определен как переменные. Я что-то упускаю ?

+0

носка определяется, но не инициализируется. – Eftakhar

+0

@ Eftakhar Должен ли я инициализироваться нулевым значением? или {} ? Не могли бы вы посоветовать мне, как инициализировать носок? –

+1

он должен быть инициализирован, какой eventEmitter что-то вроде var EventEmitter = require ('events'); var sock = new EventEmitter(); – Eftakhar

ответ

1

он должен быть инициализирован с событием Излучатель

var EventEmitter = require('events'); 
var sock = new EventEmitter(); 
Смежные вопросы