В настоящее время я пытаюсь получить доступ к опубликованному артефакту из моего расширения Azure. К сожалению, я не получаю ответа, даже не отображается ошибка. Я думаю, что проблема в клиенте. Я думаю, что разрешения установлены правильно, поскольку мне, например, удалось получить имя и идентификатор проекта.
import * as SDK from "azure-devops-extension-sdk";
import { getClient } from "azure-devops-extension-api";
import { BuildRestClient } from "azure-devops-extension-api/Build";
import { Page } from "azure-devops-ui/Page";
import { ZeroData } from "azure-devops-ui/ZeroData";
import * as React from "react";
import * as ReactDOM from "react-dom";
class Tab extends React.Component<{}, { artifactContext?: string, debugInfo?: string }> {
constructor(props: {}) {
super(props);
this.state = { artifactContext: undefined, debugInfo: undefined };
}
public async componentDidMount() {
await SDK.init();
const projectName = "Project Name";
const buildId = xxx;
const artifactName = "artifact_name";
try {
const buildClient = await getClient(BuildRestClient);
const artifact = await buildClient.getArtifact(projectName, buildId, artifactName);
if (artifact) {
this.setState({
artifactContext: JSON.stringify(artifact, null, 2),
debugInfo: "Artifact was successfully retrieved."
});
} else {
this.setState({
artifactContext: "No artifact was returned.",
debugInfo: "No artifact found with the specified name."
});
}
} catch (error: any) {
console.error("Error fetching artifact:", error);
this.setState({
artifactContext: `Error fetching artifact: ${error.message}`,
debugInfo: `API call failed: ${error.message}`
});
}
}
public render(): JSX.Element {
const { artifactContext, debugInfo } = this.state;
return (
<Page className = "flex-grow">
<ZeroData
primaryText = "Fetching artifact..."
secondaryText = {"Please wait while the artifact is being fetched."}
imageAltText = "Fetching data"
/>
{artifactContext && (
<div>
<h3>Artifact Context:</h3>
<pre>{artifactContext}</pre>
</div>
)}
{debugInfo && (
<div>
<h3>Debug Information:</h3>
<pre>{debugInfo}</pre>
</div>
)}
</Page>
);
}
}
ReactDOM.render(<Tab />, document.getElementById("root"));
Что я мог бы сделать по-другому или попытаться решить мою проблему?
Спасибо
Я установил расширение, чтобы попробовать. Я добавил больше операторов печати для отладки, и SDK.init, а также getClient, похоже, работают, но он не передает getArtifact. Может ли разрешение быть проблемой? SDK обрабатывает аутентификацию, поэтому не будет необходимости, например, в PAT, верно?
Итак, «Артефакт успешно получен». не отображается
Я получаю следующее сообщение об ошибке: «SDK AzureDevOps уже загружен. В данный документ можно загрузить только одну версию этого модуля».
Сообщение об ошибке можно найти в этом билете: github.com/microsoft/azure-devops-extension-api/issues/109. Причина проблемы — «azure-devops-extension-sdk» и « azure-devops-extension-api» использует другой способ зависимости.
Большое спасибо! Я понизил версию SDK до той же версии, которую azure-devops-extension-api использует в качестве зависимости, и теперь она работает.
Рад узнать, что теперь это может сработать для вас. Вы можете добавить ответ, чтобы поделиться решением. Это будет полезно другим пользователям, у которых возникла такая же проблема.
Спасибо, Кевин Лу-MSFT за ваш положительный вклад, который сыграл важную роль в решении проблемы mr_bean. Публикация того же решения для всех, кто столкнулся с подобной проблемой в сообществе переполнения стека.
Проблема:
Инициализация SDK и getClient
сработала, но getArtifact
не продолжилась. Сообщение об ошибке указывало на то, что загружено несколько версий AzureDevOps SDK: «SDK AzureDevOps уже загружен. В данный документ можно загрузить только одну версию этого модуля».
Исправить:
Версии azure-devops-extension-sdk и azure-devops-extension-api должны быть согласованы во избежание конфликтов.
npm list azure-devops-extension-sdk
npm list azure-devops-extension-api
Понизьте или обновите версию azure-devops-extension-sdk в соответствии с вашей средой, чтобы она соответствовала версии, используемой azure-devops-extension-api.
Таким образом, проблема mr_bean возникла из-за несоответствия версий между azure-devops-extension-sdk
и azure-devops-extension-api
. Проблема была решена путем понижения SDK до той же версии, которую использует azure-devops-extension-api
. Кевин Лу-MSFT и mr_bean, не стесняйтесь редактировать ответ, добавляя сюда все, что я пропустил.
Сталкивались ли вы с этой проблемой при использовании расширения или отладке приведенного выше кода? Можете ли вы поделиться более подробной информацией об отладке или страницей соответствующей проблемы?