“"combined"”类型的参数不可分配给 'FormatFn' 类型的参数
Argument of type '"combined"' is not assignable to parameter of type 'FormatFn'
我正在尝试将 morgan 与 winston logger 一起使用。我收到以下错误。我使用了组合的预设格式。然后我想使用我的记录器记录请求。
[ts] Argument of type '"combined"' is not assignable to parameter of type 'FormatFn'.
app.use(morgan("combined" {
stream(meta: any) {
this.log.info("Request served", meta);
},
objectMode: true,
}));
问题是传递给函数的第二个对象与为其声明的类型不匹配,即morgan.Options
。因此,编译器会跳过以 'combine'
作为参数的重载,最终,当发现没有匹配的重载时,将选择最后一个重载来报告错误,给出一个相当混乱的错误消息。
您传入的对象字面量与 morgan.Options
不匹配,因为 stream
应该是 interface StreamOptions { write(str: string): void;}
类型并且 morgan.Options
上不存在字段 objectMode
完全没有(至少不是没有增强功能的普通版本,我没有安装 Winston
)
下面的代码通过了编译器检查(注意我实际上没有 运行 这段代码,我不熟悉 morgan
只是提供打字稿类型错误的帮助):
morgan('combined', {
stream: {
write: (meta: any) => {
this.log.info("Request served", meta);
},
}
});
我正在尝试将 morgan 与 winston logger 一起使用。我收到以下错误。我使用了组合的预设格式。然后我想使用我的记录器记录请求。
[ts] Argument of type '"combined"' is not assignable to parameter of type 'FormatFn'.
app.use(morgan("combined" {
stream(meta: any) {
this.log.info("Request served", meta);
},
objectMode: true,
}));
问题是传递给函数的第二个对象与为其声明的类型不匹配,即morgan.Options
。因此,编译器会跳过以 'combine'
作为参数的重载,最终,当发现没有匹配的重载时,将选择最后一个重载来报告错误,给出一个相当混乱的错误消息。
您传入的对象字面量与 morgan.Options
不匹配,因为 stream
应该是 interface StreamOptions { write(str: string): void;}
类型并且 morgan.Options
上不存在字段 objectMode
完全没有(至少不是没有增强功能的普通版本,我没有安装 Winston
)
下面的代码通过了编译器检查(注意我实际上没有 运行 这段代码,我不熟悉 morgan
只是提供打字稿类型错误的帮助):
morgan('combined', {
stream: {
write: (meta: any) => {
this.log.info("Request served", meta);
},
}
});