我有一个带有 Typescript 的 NTVS(Visual Studio 的节点工具)项目。
以下语句无法编译:
import debug = require('debug')('MyApp');
语法错误是
(TS) ';' 预期的
在两个括号之间 ')('
是否可以在 TypeScript 中使用“调试”?
我有一个带有 Typescript 的 NTVS(Visual Studio 的节点工具)项目。
以下语句无法编译:
import debug = require('debug')('MyApp');
语法错误是
(TS) ';' 预期的
在两个括号之间 ')('
是否可以在 TypeScript 中使用“调试”?
从READMEconsole.error
中,调试模块正在导出一个用您的模块名称 (MyApp)装饰的函数。我猜还有其他方法,但我使用:
import Debug from "debug";
const debug = Debug("MyApp");
// then to use
debug("Something happened");
要将所有内容打印到控制台,请使用...运行您的应用程序
$ DEBUG=* node MyApp.js
此处的答案不适用于我使用最新版本的 Typescript。这是我在 Typescript 中使用正确的导入语法的方法^3.5.3
:
为 Debug安装 Debug 包和Typescript 类型(只有 dev 需要的类型)
npm install --save debug
npm install --save-dev @types/debug
然后在.ts
文件中:
import Debug from "debug";
const debug = Debug("AppName");
希望这对其他人有帮助!
请记住,TypeScript 是 javascript 的超集,因此您仍然可以这样做:
const debug = require('debug')('my-app:my-module');
Typescript 似乎得出结论,debug
这里的常量是“any”类型,并且您失去了所有类型安全性,但是使用像 debug 这样简单的包,我认为您会没事的...
就个人而言,我认为在每个模块中实例化调试的 2 行是 1 行太多,所以我继续在我的 .ts 文件中使用这一行。
PS 我喜欢使用模块标签,所以我可以启用仅使用某些模块DEBUG=my-app:my-module,my-app:some-other-module ts-node my-app
或使用我的所有模块登录DEBUG=my-app:* ...
调试在打字稿中不显示任何日志的解决方案是由于调试依赖于环境变量来决定如何显示日志的原因
解决方案
确保您已安装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上启动的所有进程