Azure DevOps 存储 - 数据服务未定义

问题描述 投票:0回答:1

我正在按照微软网站上的各种 devepos 扩展示例进行操作,但用于创建和编辑文档的示例似乎对我不起作用(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.log("SDK is defined. Trying to initialize...");
        SDK.init();
        SDK.ready().then(() => {
            console.log("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.log("Doc id: " + doc.id);
                });
            });

        });
    } else {
        console.log('SDK is not defined');
    }
});

调用SDK.getService后,dataService始终是undefined。据我所知,SDK 已正确初始化,因为许多其他 SDK 功能似乎按预期工作,并且tributionID 是正确的。但我不想排除这个原因,因为我在摆脱“在任何消息通道上都找不到处理程序:”错误时遇到了很多麻烦。

非常感谢任何帮助或建议。

azure-devops azure-devops-extensions
1个回答
0
投票

我注意到其他一些人也有类似的问题

dataService
。有一个 repo 似乎正在工作。希望对您有帮助。

    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
            });
        });
    }
© www.soinside.com 2019 - 2024. All rights reserved.