如何使用带有typescript的“debug”模块

时间:2017-12-09 00:47:20

标签: node.js typescript express ntvs

我有一个带有Typescript的NTVS(Visual Studio的Node Tools)项目 以下语句无法编译:

import debug = require('debug')('MyApp');

语法错误

  

(TS)';'预期

在两个括号之间')(' 是否可以在TypeScript中使用“debug”?

4 个答案:

答案 0 :(得分:8)

README,调试模块正在导出一个用模块名称(MyApp)装饰console.error的函数。我猜其他方法,但我使用:

import * as Debug from "debug";
const debug = Debug("MyApp");

// then to use
debug("Something happened");

要将所有内容打印到控制台,请使用...运行您的应用

$ DEBUG=* node MyApp.js

答案 1 :(得分:0)

请记住,TypeScript是一个超级的javascript集,所以你仍然可以做这个单行:

const debug = require('debug')('my-app:my-module');

Typescript似乎得出结论,这里的debug常量是'any'类型,并且你失去了所有类型的安全性,但是使用像debug一样简单的包,我想你会没事...... < / p>

就个人而言,我认为在每个模块中实例化调试的2行是1行太多,所以我继续在我的.ts文件中使用这个单行。

P.S。我喜欢使用模块标签,因此我可以使用DEBUG=my-app:my-module,my-app:some-other-module ts-node my-app或使用DEBUG=my-app:* ...

的所有模块启用某些模块的日志记录

答案 2 :(得分:0)

对于最新版本的Typescript,这里的答案对我不起作用。这是我在Typescript ^3.5.3中使用正确的导入语法使其工作的方式:

安装用于调试的Debug软件包 Typescript类型(仅dev需要的类型)

npm install --save debug
npm install --save-dev @types/debug

然后在.ts个文件中:

import Debug from "debug";
const debug = Debug("AppName");

希望这对其他人有帮助!

答案 3 :(得分:0)

debug 在 typescript 中不显示任何日志的解决方案是由于 debug 依赖于环境变量来决定如何显示日志的原因

解决方案

确保您已安装 dotenv 及其类型定义文件

npm install dotenv && npm install -D @types/dotenv

然后在你的项目根目录下创建一个 .env 文件并添加这个环境变量:

DEBUG = *

最后在您的应用程序的索引文件中。配置 dotenv 以在运行任何其他任务之前加载环境变量。

<块引用>

它非常重要的 dotenv 配置在索引文件的顶部完成,在任何其他代码行之前。

添加这两行代码

import dotenv from "dotenv";
dotenv.config();

这应该加载调试所需的 DEBUG 环境变量以在标准输入上显示输出。

<块引用>

请记住,如果您只想查看文件中定义的日志,而不是其他模块中的其他日志。最好将应用程序名称定义为命名空间。这样您就可以通过上述环境变量

过滤日志
const debug = debug("applicationName:other-more-information");

然后要单独查看调试日志,只需将 DEBUG 变量从 * 更改为 applicationName:*

DEBUG = applicationName:*
<块引用>

对于基于 unix 的操作系统用户,您可以尝试直接将此变量导出到环境变量(尽管我尚未测试此解决方案) export DEBUG=* - 此方法仅适用于所有进程开始于 这个 shell