0

我正在尝试为 NodeJS 项目配置我的 Bunyan Logger。这个配置运行良好,直到我开始将我的项目转换为 Typescript。

这是在文件 MyLogger.ts 中配置我的记录器的配置函数:

import { createWriteStream } from 'fs'
import { stdSerializers, createLogger } from 'bunyan'
const pkg = require('../../package.json')

export default function (logLevel: string = 'debug', logFolder: string) {
  const logOptions = {
    serializers: stdSerializers,
    name: `${pkg.name}-${pkg.version}`,
    streams: [
      { level: 'error', stream: process.stderr },
      { level: logLevel, stream: process.stdout }
    ]
  }

  if (logFolder) {
    logOptions.streams.push(
      { level: logLevel, stream: createWriteStream(`${logFolder}/${pkg.name}.log`) })
  }

  const logger = createLogger ({
    name: logOptions.name,
    streams: logOptions.streams
  })

  return logger
}

现在当我编译打字稿时,我收到以下错误:

lib/config/MyLogger.ts(5,1):错误 TS4058:导出函数的返回类型具有或正在使用来自外部模块“project-folder/node_modules/@types/bunyan/index”的名称“Logger”,但无法命名.

我正在使用节点版本:6.9.2 Bunyan 版本:1.8.5 @types/bunyan":"0.0.35

任何帮助理解错误或如何解决这个问题..都会很棒。谢谢。

4

1 回答 1

2

基于此处的打字稿问题:TS4023

我通过添加导入来运行编译:

import * as Logger from '@types/bunyan'

然后将返回类型添加到我的导出函数中作为Logger.

于 2017-02-26T15:13:18.347 回答