Отладка интеграций в Visual Studio CodeBETA
Интеграции можно отлаживать в VS Code с использованием точек останова (breakpoints). Это упрощает проверку логики работы блоков и подключений в реальном времени.
Для работы отладки требуется установить специальное расширение. При запуске проекта CLI предложит установить его автоматически.
Вы можете запускать отладку как для блоков, так и для подключений. Если блок использует подключение, необходимо указать connectionKey
в конфигурации — тогда сначала будет выполнено подключение, затем сам блок.
Чтобы отладка работала корректно, объект integration
(в котором содержится meta
и executePagination
) должен быть определен в одном файле.
Доступны три режима отладки:
- Одиночный запуск блока — позволяет однократно выполнить блок. Используйте этот режим, например, для проверки базовой логики. Можно выполнить:
- Через интерфейс VS Code:
Debug <ключ блока>
- Через CLI:
Важно: При запуске без VS Code брекпоинты работать не будут.node --import tsx ./node_modules/.bin/im-package-cli integration debug --entityKey=block1
- Через интерфейс VS Code:
- Серия запусков — позволяет выполнить блок несколько раз подряд. Полезно для проверки логики, связанной с
context
.Количество повторений задается параметромnode --import tsx ./node_modules/.bin/im-package-cli integration debug --entityKey=block1 --series
seriesIterations
(по умолчанию — 3). - Генерация схемы
output
— запускает выполнение блока и, на основе егоoutput
, автоматически формируетoutput_variables
. Позволяет делать быструю настройку структуры данных.Важно: Типы, определенные автоматически, могут быть неточными. Обязательно проверьте сгенерированныеnode --import tsx ./node_modules/.bin/im-package-cli integration debug --entityKey=block1 --isGenerateSchema
output_variables
вручную.
Имитация входных данных для inputFields
Для полноценной отладки можно использовать тестовые данные (inputData
и authData
), чтобы не зависеть от реальных подключений и API.
Добавьте соответствующую конфигурацию в файл integrationrc.js:
//@ts-check
require("dotenv").config();
/**
* @type {import("@infomaximum/package-cli").IntegrationRCConfig}
*/
const config = {
//.... другие конфигурации
debugging: {
// количество серий запусков отладки блока, если поле не указано, то по умолчанию 3, максимальное значение 100к
seriesIterations: 3,
// конфигурирование блоков
blocks: {
// ключ блока, указанный в meta
qwerty1: {
// моковые данные для inputFields
inputData: {
// ключ inputField
assignee: "Text 97887",
author: "Text 55574",
description: "Text 84517",
end_date: "Text 28407",
epic_key: "Text 4267",
issue_id_or_key: "Text 78869",
labels: "Text 4989",
start_date: "Text 94656",
task_type: "Text 24406",
theme: "Text 7",
},
// ключ подключения, которое будет вызываться непосредственно перед запуском блока для формирования authData
connectionKey: "jira_base_connection",
// {authData: {...}} - пока нет подключения, можно указать моковые данные подключения
},
},
// конфигурирование подключений
connections: {
// ключ подключения, указанный в meta
jira_base_connection: {
// моковые данные для inputFields подключения
authData: {
connection_base_url: "https://jira.office.infomaximum.com",
connection_login: process.env.JIRA_LOGIN,
connection_password: process.env.JIRA_PASSWORD,
},
},
},
},
};
Все конфиденциальные данные — логины, пароли, API-ключи, токены и т. п. — должны находиться только в .env и не должны попадать в репозиторий. Создайте .env_example с имитационными значениями, добавьте его в репозиторий и используйте как шаблон для создания .env с рабочими данными.
Дополнительные инструменты отладки
В дополнение к брекпоинтам можно использовать:
console.log(...)
— для вывода значений в терминалdebugger
— для установки точки останова вручную
Валидация данных блоков
При запуске отладки CLI автоматически выполняет валидацию соответствия между значениями, возвращаемыми из блока (output
), и описанием выходных данных (output_variables
).
Если output_variables
не заданы, CLI может предложить сгенерировать их автоматически на основе полученного output
. Это позволяет ускорить настройку блоков и избежать ошибок при интеграции.
После автогенерации рекомендуется вручную проверить типы данных в output_variables
.
Была ли статья полезна?