Я следую различным примерам расширений devepos на веб-сайте Microsoft, но пример для создания и редактирования документов, похоже, у меня не работает (https://learn.microsoft.com/en-us/azure /devops/extend/develop/data-storage?view=azure-devops)
window.requirejs.config({
enforceDefine: true,
paths: {
'SDK': './lib/SDK.min',
}
});
window.requirejs(['SDK'], function (SDK) {
if (typeof SDK !== 'undefined') {
console.info("SDK is defined. Trying to initialize...");
SDK.init();
SDK.ready().then(() => {
console.info("SDK is ready");
// Get data service
SDK.getService(SDK.getContributionId()).then(function (dataService) {
// Prepare document first
var newDoc = {
fullScreen: false,
screenWidth: 500
};
dataService.createDocument("MyCollection", newDoc).then(function (doc) {
// Even if no ID was passed to createDocument, one gets generated
console.info("Doc id: " + doc.id);
});
});
});
} else {
console.info('SDK is not defined');
}
});
После вызова SDK.getService dataService всегда не определен. Насколько я могу судить, SDK инициализировался правильно, поскольку многие другие функции SDK работают должным образом и идентификатор вклада верен. Но я не хочу исключать это как причину, поскольку у меня было много проблем с избавлением от ошибки «Ни на одном канале для сообщения не найден обработчик».
Любая помощь или предложения очень ценятся.
Привет Цзыян, спасибо за ваш комментарий. Я могу использовать API для получения документов, но, если я не ошибаюсь, API не может создавать или записывать документы — это должно быть сделано с помощью SDK. Код, который я использовал выше, является прямой копией примера из официальной документации, поэтому я могу только предположить, что упускаю что-то довольно очевидное, если только с примером на веб-сайте Microsoft что-то не так.
Проверяя ранее опубликованный общедоступный репозиторий, документ обновляется с помощью updateDocumentByName()
. Я пытался использовать образец из официального документа для создания расширения, но это не удалось из-за некоторых ошибок, таких как ReferenceError: define is not defined
. Я заметил, что у некоторых других была похожая проблема с dataService
. Например, это и это.
Привет, Зиянг, репозиторий, на который ссылается Мааша по предоставленной вами ссылке, похоже, работает. github.com/MicrosoftDocs/azure-devops-docs/issues/13803 Спасибо!
Привет @cob, приятно знать, что это работает для тебя. Чтобы помочь другим, у кого может возникнуть аналогичный вопрос, я публикую ответ ниже, чтобы сделать его более понятным.
Я заметил, что у некоторых других была похожая проблема с dataService
. Есть репозиторий , который, похоже, работает. Надеюсь, это будет полезно для вас.
private async initializeState(): Promise<void> {
await SDK.ready();
const accessToken = await SDK.getAccessToken();
const extDataService = await SDK.getService<IExtensionDataService>(CommonServiceIds.ExtensionDataService);
this._dataManager = await extDataService.getExtensionDataManager(SDK.getExtensionContext().id, accessToken);
this._dataManager.getValue<string>("test-id").then((data) => {
this.setState({
dataText: data,
persistedText: data,
ready: true
});
}, () => {
this.setState({
dataText: "",
ready: true
});
});
}
Я заметил, что есть общедоступный репозиторий , где автор создал расширение для получения документа из коллекции. Вы можете проверить, полезно ли оно для вас. В то же время вы можете попробовать этот образец в официальном документе.