我正在调查我正在开发的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
即可工作。