Chr*_*ais 8 winston typescript
我无法想象如何在打字稿中使用记录模块Winston.我尝试设置记录器级别时出错,而当我尝试记录错误时出现另一个错误:
import * as logger from "winston";
logger.level = 'debug';
// [ts] Cannot assign to 'level' because it is a constant or a read-only property.
logger.error(new Error('test'));
// [ts] Argument of type 'Error' is not assignable to parameter of type 'string'.
Run Code Online (Sandbox Code Playgroud)
我已经加入既winston和@types/winston我的项目.
编辑:完成约书亚的回答,似乎默认情况下,温斯顿登录到......无处可去.您必须添加一个传输才能使其工作:
import * as logger from "winston";
logger.configure({
level: 'debug',
transports: [
new logger.transports.Console({
colorize: true
})
]
});
Run Code Online (Sandbox Code Playgroud)
以下是Winston的类型定义:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/winston/index.d.ts
如果查看文件的底部,默认导出被声明为const,所以当您尝试修改level属性时,它会向您抱怨,因为您正在尝试修改const对象.以下是相关部分:
declare const winston: winston.Winston;
export = winston;
Run Code Online (Sandbox Code Playgroud)
而不是尝试直接设置该属性,尝试使用该configure方法(请注意您的logger导入类型Winston:
logger.configure({
level: 'verbose',
...
})
Run Code Online (Sandbox Code Playgroud)
如果这不起作用(我不确定配置调用预期的其他内容),您可以尝试创建一个新的LoggerInstance,您可以修改它.
你的第二个错误是因为你传递了Error一个string预期的对象.Winston.info的声明如下:
info: LeveledLogMethod;
Run Code Online (Sandbox Code Playgroud)
这是LeveledLogMethod界面:
interface LeveledLogMethod {
(msg: string, callback: LogCallback): LoggerInstance;
(msg: string, meta: any, callback: LogCallback): LoggerInstance;
(msg: string, ...meta: any[]): LoggerInstance;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12596 次 |
| 最近记录: |