Javascript Node.js TypeError:无效的非字符串/缓冲区区块
答复: 我终于找到了它,原来我也在错误的地方寻找日志文件。它将其放置在主文件夹中,而不是javascript所在的文件夹中。对我有效的代码是:Javascript Node.js TypeError:无效的非字符串/缓冲区区块,javascript,node.js,terminal,entity-relationship,throw,Javascript,Node.js,Terminal,Entity Relationship,Throw,答复: 我终于找到了它,原来我也在错误的地方寻找日志文件。它将其放置在主文件夹中,而不是javascript所在的文件夹中。对我有效的代码是: 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
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")
});
});
我是Node.js的新手,所以我真的需要一些帮助。 我正在尝试记录聊天中的消息 到目前为止,我有:
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);
});
});
});
但我一直在犯这样的错误:
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)
events.js:72
投掷者;//未处理的“错误”事件
^
TypeError:无效的非字符串/缓冲区区块
在validChunk(_stream_writable.js:150:14)
在WriteStream.Writable.write(_stream_Writable.js:179:12)
在插座上。(/Users/test/Desktop/Chat/app.js:16:9)
在Socket.EventEmitter.emit[as$emit](events.js:95:17)
位于SocketNamespace.handlePacket(/Users/test/Desktop/Chat/node_modules/socket.io/lib/namespace.js:335:22)
位于Manager.onClientMessage(/Users/test/Desktop/Chat/node_modules/socket.io/lib/Manager.js:488:38)
在WebSocket.Transport.onMessage(/Users/test/Desktop/Chat/node_modules/socket.io/lib/Transport.js:387:20)
在解析器处。(/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:39:10)
位于Parser.EventEmitter.emit(events.js:95:17)
完成时(/Users/test/Desktop/Chat/node_modules/socket.io/lib/transports/websocket/hybi-16.js:288:16)
我不知道这是什么意思,也找不到。有人知道我做错了什么吗?提前谢谢 这里您可以将数据类型转换为字符串并打印它。它将按预期工作。 我发现我在Postman中解析相同的键和值对,同时点击应用程序编程接口,导致无效的非字符串/缓冲区块