Как использовать модуль "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=*
- Этот метод будет работать только для всех процессов, запущенных в этой оболочке