无法确定“pino-pretty”的传输目标

etr*_*anz 12 node.js typescript

我正在尝试使用 pino 库,但出现错误

我的代码

我创建了一个 logger.js 文件并从 node_module 导入了 pino 并添加了 pino-pretty 的传输。

记录器.js

   import pino from "pino";
    const logger = pino({
      transport: {
        target: "pino-pretty",
        options: {
          colorize: true,
        },
      },
    });
    export default logger;
Run Code Online (Sandbox Code Playgroud)

我创建了一个数据库文件并从记录器文件导入 pino 并使用 info 函数显示我的错误。

数据库.js

import mongoose from "mongoose";
import logger from "./logger";
const DB_CONNECTION_STRING =
  process.env.DB_CONNECTION_STRING ||
  "mongodb://localhost:27017/*******";
try {
    await mongoose.connect(DB_CONNECTION_STRING);
    logger.info("Connect to database");
  } catch (e) {
    logger.error(e, "Failed to connect to database. Goodbye");
    process.exit(1);
  }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

小智 6

如果您还没有安装,则必须安装pino-pretty

npm i pino-pretty
Run Code Online (Sandbox Code Playgroud)

  • pino-pretty 不鼓励作为 npm 依赖项,命令应该是 `npm i -D pino-pretty` 将其添加为开发依赖项,请参阅更多[此处](https://github.com/pinojs/pino-pretty#integration ) (2认同)

Dur*_*den 6

如果它不适用于传输选项,您可以将其用作流:

import pino from "pino";
import pretty from "pino-pretty";

const stream = pretty({
  levelFirst: true,
  colorize: true,
  ignore: "time,hostname,pid",
});

const logger = pino(
  {
    name: "MyLogger",
    level: process.env.NODE_ENV === "development" ? "debug" : "info",
  },
  stream
);

export default logger;
Run Code Online (Sandbox Code Playgroud)

文档中的更多详细信息:https ://github.com/pinojs/pino-pretty#usage-as-a-stream


小智 0

pino-pretty您的 package.json 中可能缺少该内容,您是否尝试过将其添加为依赖项?