首页 > 解决方案 > 在 fastify pretty print 中没有定义 pretty

问题描述

我正在尝试使用prettyprint: true这样的 fastify 记录器选项:

const build = require("./app");

const startServer = async () => {
  try {
    const app = await build({
      logger: {
        prettyPrint: true
      },
    });

    const PORT = process.env.PORT;
    await app.listen(PORT);
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};

startServer().catch();

此代码来自此处此处的官方文档

pino-pretty安装包

当我尝试运行服务器时出现此错误:

const formatted = pretty(typeof redact === 'function' ? redact(obj) : obj)
                        ^

TypeError: pretty is not a function

检查这行代码(/node_modules/pino/lib/tools.js 282),pretty类型是object,但在代码中它被用作function

const formatted = pretty(typeof redact === 'function' ? redact(obj) : obj)

有任何想法吗?

标签: node.jsfastify

解决方案


找到了解决方案

  1. 安装pinopino-pretty打包 ( npm i pino pino-pretty)

  2. pino通过要求和添加pretty-print: true选项来初始化记录器

const build = require("./app");

const startServer = async () => {
  try {
    const app = await build({
      logger: require("pino")({ prettyPrint: true }), // here
    });

    await app.listen(app.config.PORT);
  } catch (err) {
    console.log(err);
    process.exit(1);
  }
};

startServer().catch();

推荐阅读