You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS Express项目控制台出现意外Buffer输出问题咨询

输出内容含义

你看到的<Buffer xx xx>是Node.js内置二进制缓冲区Buffer对象的默认控制台输出格式,后面的十六进制串就是缓冲区存储的原始二进制数据:

  • 你给出的第一段<Buffer 22 22>转成UTF-8字符串就是空的双引号内容 ""
  • 第二段Buffer开头的7b对应字符{、22对应字符",转义后就是完整的JSON格式请求数据:{"actionIdentifier":"update","body":{"to":"mitarbe"...}},是前端发送的业务请求内容

触发原因

这类日志是代码中直接打印未转码的原始二进制数据导致的,和你当前的技术栈关联后,90%以上概率出在WebSocket的消息监听逻辑中:你在message事件回调里直接把接收到的原始消息参数做了console打印,没有先转成字符串格式。小概率是你自定义的Express请求日志中间件、第三方日志依赖开启了原始请求体打印。

移除多余输出的方案

  • 优先全局搜索项目内所有console.log、console.dir、console.debug等打印语句,定位到WebSocket消息监听回调中直接打印消息入参的代码,示例如下:
// 错误写法,会打印Buffer
ws.on('message', (data) => {
  console.log(data)
  // 业务逻辑
})

你可以直接删除这行打印语句,如果需要保留日志,先转码再打印即可:

// 转成字符串打印
console.log(data.toString())
// 如果是JSON格式可以转成对象打印
console.log(JSON.parse(data.toString()))
  • 检查项目中是否引入了morgan等HTTP日志中间件、自定义全局请求拦截中间件,是否配置了打印原始req.body的逻辑,调整配置关闭对应打印即可。
  • 低概率排查Mongoose调试配置:如果开启了mongoose.set('debug', true),关闭即可(但Mongoose默认调试日志格式和你给出的Buffer日志不符,可作为最后排查项)

内容的提问来源于stack exchange,提问作者NoBullsh1t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:07