Как использовать модуль "debug" с машинописью

У меня есть проект NTVS (Node Tools для Visual Studio) с Typescript.
Следующее утверждение не компилируется:

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

Синтаксическая ошибка

(TS) ';' ожидаемый

между двумя круглыми скобками ')('
Можно ли использовать "отладку" с TypeScript?

4 ответа

Из README модуль отладки экспортирует функцию, которая украшает console.error с именем вашего модуля (MyApp). Я предполагаю, что есть другие способы, но я использую:

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

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

И чтобы распечатать все на консоли, запустите ваше приложение с...

$ DEBUG=* node MyApp.js

Ответы здесь не сработали для меня с более поздними версиями Typescript. Вот как мне удалось заставить его работать с правильным синтаксисом импорта в Typescript^3.5.3:

Установите пакет отладки и типы Typescript для отладки (типы необходимы только для разработчиков)

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');

Машинопись, кажется, приходит к выводу, что debug Здесь константа имеет тип 'any', и вы теряете безопасность всех типов, но с таким простым пакетом, как отладка, я думаю, у вас все будет в порядке...

Лично я думаю, что 2 строки для создания экземпляров отладки в каждом модуле - это слишком много, поэтому я продолжаю использовать эту строку в моих файлах.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 в корневой папке вашего проекта add и эту переменную среды:

      DEBUG = *

наконец, в индексном файле вашего приложения. Настройте dotenv для загрузки переменных среды перед запуском любой другой задачи.

Его очень важная конфигурация dotenv выполняется в верхней части индексного файла перед любыми другими строками кода.

Добавьте эти две строки кода

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

Это должно загрузить переменную среды DEBUG, требуемую отладкой для отображения вывода на стандартном вводе.

Помните, хотите ли вы просматривать журналы, определенные только в ваших файлах, а не другие журналы из других модулей. Лучше определить имя приложения как пространство имен. Таким образом, вы можете фильтровать журналы по переменной среды, описанной выше, т.е.

      const debug = debug("applicationName:other-more-information");

Затем, чтобы просмотреть только журналы отладки, просто измените параметр DEBUG varibale с * к applicationName:*

      DEBUG = applicationName:*

Для пользователей ОС на базе unix вы можете попробовать напрямую экспортировать эту переменную в переменные среды (хотя я не тестировал это решение) export DEBUG=*- Этот метод будет работать только для всех процессов, запущенных в этой оболочке

Другие вопросы по тегам