Fastify配置logger.prettyPrint为true时报pretty不是函数错误如何解决?
该报错由pino-pretty版本兼容性问题导致:v9及以上版本的pino-pretty调整了导出规则,不再默认导出格式化函数,而是导出了包含default属性的对象,而你当前使用的Fastify/pino版本依旧按照旧逻辑直接调用pretty()方法,因此触发类型错误。
你可以选择以下任意一种方案解决:
方案1:降级pino-pretty到兼容版本
直接安装v8.x版本的pino-pretty,无需修改原有配置:
npm install pino-pretty@8.x # 若使用yarn yarn add pino-pretty@8.x # 若使用pnpm pnpm add pino-pretty@8.x
安装完成后重启服务即可恢复正常。
方案2:适配新版pino-pretty,修改Fastify日志配置
prettyPrint配置项早已被pino官方废弃,你可以改用官方推荐的transport写法适配新版依赖,原有pino-pretty版本不需要降级:
将你原有logger配置替换为如下内容:
logger: { transport: { target: 'pino-pretty', // 可选:添加pino-pretty自定义配置 options: { colorize: true, // 输出彩色日志 translateTime: 'SYS:yyyy-mm-dd HH:MM:ss' // 格式化时间戳 } } }
修改后重启服务即可生效。
内容的提问来源于stack exchange,提问作者selim
相关产品推荐
相关产品推荐

