typescript - '"combined"' 类型的参数不能分配给 'FormatFn' 类型的参数
问题描述
我正在尝试将摩根和温斯顿记录器一起使用。我收到以下错误。我使用了组合的预设格式。然后我想使用我的记录器记录请求。
[ts] '"combined"' 类型的参数不可分配给 '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;}
并且字段objectMode
根本不存在morgan.Options
(至少在没有增强的库存版本中,我没有安装Winston
)
下面的代码通过了编译器检查(请注意,我实际上并没有运行此代码,我不熟悉morgan
仅提供有关 typescript 类型错误的帮助):
morgan('combined', {
stream: {
write: (meta: any) => {
this.log.info("Request served", meta);
},
}
});
推荐阅读
- javascript - 如何将前导零的数字转换为字符串并保留原始数字
- c - 如何运行我在另一台计算机上编写的 ac 程序
- gnuplot - 如何从文本文件中的一系列 grepped 数据在 gnuplot 中制作箭头脚本
- arrays - 表格视图,每个联系人的第一个字母都有部分
- react-native - 更新到 Xcode 11.0 后反应本机崩溃
- swift - 手动删除 iOS 9.0 及更高版本的通知观察器
- java - 如何修复 Android Studio 中的“使用 JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ 处接受格式错误的 JSON”错误
- reactjs - 键入 React 组件实例的数组
- c# - 从 C# 中的串行端口读取
- javascript - 如何通过反应状态变量数组并确定它是否具有一个真值