最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Node.js TypeError: Invalid non-stringbuffer chunk - Stack Overflow

programmeradmin5浏览0评论

ANSWER: I've finally got it, turns out I was also looking in the wrong place for the logger file. it places it in the main folder instead of the folder the javascript was in. The code that worked for me was:

var fs = require('fs');
var log = fs.createWriteStream('nodelogger.txt', {flags: 'a', encoding: 'utf-8',mode: 0666});

server.listen(8888);

app.use("/", express.static(__dirname + '/files'));


io.sockets.on('connection', function (socket) {
  socket.on('msg', function (data) {
    io.sockets.emit('new', data);
    log.on('error', function (err) {
      console.log(err);
    });

    console.log(data);
    log.on('error', function(e) { console.error(e); });
    var newdata = JSON.stringify(data);
    log.write(newdata += "\r\n")
  });
});

I'm totally new to Node.js so I could really use some help. I'm trying to log messages from the chat I'm making So far I have this:

var fs = require('fs');
var log = fs.createWriteStream('nodelogger.txt', {'flags': 'a'});

server.listen(8888);

app.use("/", express.static(__dirname + '/files'));


io.sockets.on('connection', function (socket) {
  socket.on('msg', function (data) {
    io.sockets.emit('new', data);
    log.write(data);
    log.on('error', function (err) {
      console.log(err);
    });
  });
});

But I keep getting this error:

events.js:72
        throw er; // Unhandled 'error' event
              ^
TypeError: Invalid non-string/buffer chunk
    at validChunk (_stream_writable.js:150:14)
    at WriteStream.Writable.write (_stream_writable.js:179:12)
    at Socket.<anonymous> (/Users/test/Desktop/Chat/app.js:16:9)
    at Socket.EventEmitter.emit [as $emit] (events.js:95:17)
    at SocketNamespace.handlePacket (/Users/test/Desktop/Chat/node_modules/socket.io/lib/namespace.js:335:22)
    at Manager.onClientMessage (/Users/test/Desktop/Chat/node_modules/socket.io/lib/manager.js:488:38)
    at WebSocket.Transport.onMessage (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transport.js:387:20)
    at Parser.<anonymous> (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10)
    at Parser.EventEmitter.emit (events.js:95:17)
    at finish (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:288:16)

And I have no idea what it means, can't find it anywhere either. Does anybody have an idea what I'm doing wrong? Thanks in advance!

ANSWER: I've finally got it, turns out I was also looking in the wrong place for the logger file. it places it in the main folder instead of the folder the javascript was in. The code that worked for me was:

var fs = require('fs');
var log = fs.createWriteStream('nodelogger.txt', {flags: 'a', encoding: 'utf-8',mode: 0666});

server.listen(8888);

app.use("/", express.static(__dirname + '/files'));


io.sockets.on('connection', function (socket) {
  socket.on('msg', function (data) {
    io.sockets.emit('new', data);
    log.on('error', function (err) {
      console.log(err);
    });

    console.log(data);
    log.on('error', function(e) { console.error(e); });
    var newdata = JSON.stringify(data);
    log.write(newdata += "\r\n")
  });
});

I'm totally new to Node.js so I could really use some help. I'm trying to log messages from the chat I'm making So far I have this:

var fs = require('fs');
var log = fs.createWriteStream('nodelogger.txt', {'flags': 'a'});

server.listen(8888);

app.use("/", express.static(__dirname + '/files'));


io.sockets.on('connection', function (socket) {
  socket.on('msg', function (data) {
    io.sockets.emit('new', data);
    log.write(data);
    log.on('error', function (err) {
      console.log(err);
    });
  });
});

But I keep getting this error:

events.js:72
        throw er; // Unhandled 'error' event
              ^
TypeError: Invalid non-string/buffer chunk
    at validChunk (_stream_writable.js:150:14)
    at WriteStream.Writable.write (_stream_writable.js:179:12)
    at Socket.<anonymous> (/Users/test/Desktop/Chat/app.js:16:9)
    at Socket.EventEmitter.emit [as $emit] (events.js:95:17)
    at SocketNamespace.handlePacket (/Users/test/Desktop/Chat/node_modules/socket.io/lib/namespace.js:335:22)
    at Manager.onClientMessage (/Users/test/Desktop/Chat/node_modules/socket.io/lib/manager.js:488:38)
    at WebSocket.Transport.onMessage (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transport.js:387:20)
    at Parser.<anonymous> (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10)
    at Parser.EventEmitter.emit (events.js:95:17)
    at finish (/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:288:16)

And I have no idea what it means, can't find it anywhere either. Does anybody have an idea what I'm doing wrong? Thanks in advance!

Share Improve this question edited Mar 6, 2015 at 21:57 Marie 3041 silver badge7 bronze badges asked Jun 19, 2013 at 10:08 HoloLadyHoloLady 1,0431 gold badge12 silver badges28 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 1

Here you can convert datatype to string and print it. It will work as expected.

Code Error Postman Error

I Found that I was parsing same key and value pair in Postman while hitting Application Programming Interface Resulting in Invalid non-string/buffer chunk

发布评论

评论列表(0)

  1. 暂无评论