javascript - Node.js 类型错误 : Invalid non-string/buffer chunk

标签 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 + '/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)

我不知道它是什么意思,也找不到它。有人知道我做错了什么吗?提前致谢!

最佳答案

在这里您可以将数据类型转换为字符串并打印出来。它将按预期工作。

关于javascript - Node.js 类型错误 : Invalid non-string/buffer chunk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17188533/

相关文章:

javascript - 如何使我的 javascript 函数在作用域内异步

javascript - 如何创建一次悬停 3 或 4 个元素的 JavaScript 函数

javascript - 偏移 html anchor 以针对固定标题进行调整

node.js - 错误 : The module . ..是使用 NODE_MODULE_VERSION 57 针对不同的 Node.js 版本进行编译的。此版本的 Node.js 需要

terminal - 如何在 Visual Studio 2017/2019 中获取终端窗口?

javascript - 包装并删除多余的字符

node.js - NodeInterface 和 nodeField 在 relayjs 中是如何工作的,它们是什么意思

node.js - 如何在 Dockerfile 中设置 ENV 变量(来自 .txt 文件的内容)?

linux - 为什么我无法在 WinSCP 中执行 shutdown.sh?

vim - 将命令 s 映射到 :w in vim