我有一个带有Typescript的NTVS(Visual Studio的Node Tools)项目 以下语句无法编译:
import debug = require('debug')('MyApp');
语法错误
(TS)';'预期
在两个括号之间')(' 是否可以在TypeScript中使用“debug”?
答案 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