为什么node-emoji无法在nestjs / pino logger上正确打印?



我正在调查我正在开发的Nestjs项目中的一个奇怪行为,该项目希望使用@Nestjs/Pino logger在终端日志中显示表情符号。但是,如果我使用console.log(emoji.get('gear')),则node-emoji仅在终端中正确显示表情符号。但是,如果我使用pino.info(emoji.get('gear') + ' test string.....'),我会得到一个输出:[1646848210346] INFO (18320 on DESKTOP-2H3BS4O): **ΓÜÖ∩╕Å** test string.....。其中"><强>ΓÜÖ╕Å";,应该是记录器在终端打印的表情符号。

我曾就Nestjs的不和寻求支持,但在那里,一位用户使用了我的最小复制存储库,问题并没有发生在他们的环境中。我正在使用Windows/VCode,这让我相信问题可能是我的环境造成的。因此,这里是repo:链接的链接,用于运行项目:

  • npm i
  • npm运行启动:dev
  • 转到http://localhost:3000/api/#/default/AppController_getHello,并调用Get'/testEmoji'
  • 查看VSCode的端子

我的VSCode环境

  • 版本:1.62.3(用户设置(
  • 提交:ccbaa2d27e38e5afa3e5c21c1c7bef4650764247
  • 日期:2021-11-17T08:11:14.551Z
  • 电子:13.5.2
  • 铬:91.0.4472.164
  • Node.js:14.16.0
  • V8:9.1.269.39电子.0
  • 操作系统:Windows_NT x64 10.0.19044

我的电脑环境

  • 操作系统名称:Microsoft Windows 10 Pro
  • 操作系统版本:10.0.190944 N/A Build 19044

有关@nestjs/pino logger的package.json、package-lock.json和confuraton的信息可以在链接的repo中找到。

这是Pino在2018年发现的Node.js的已知限制。Pino团队在他们的文档中提出了这种解决方法。

在终端中运行此命令:

chcp 65001

如果您使用nodemon和pino-pretty,您可能需要在package.json中添加类似的内容,以使其在VSCode终端(默认情况下为powershell(中工作。

"scripts": {
"start": "node index.js",
"dev": "chcp 65001 && nodemon index.js | pino-pretty"
},

然后,运行npm run dev即可工作。

相关内容

  • 没有找到相关文章

最新更新