You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps扩展开发:调用SDK.getService后dataService始终为undefined

Azure DevOps扩展数据存储:SDK.getService返回undefined的解决方法

核心问题定位

你当前代码中调用SDK.getService(SDK.getContributionId())是错误的——数据存储服务的官方标识符是"data-service",而非你的扩展自身的contribution ID。这是导致dataService始终为undefined的直接原因。

修正后的代码

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");
            // 获取数据存储服务,使用正确的服务标识符"data-service"
            SDK.getService("data-service").then(function (dataService) {
                var newDoc = {
                    fullScreen: false,
                    screenWidth: 500
                };

                dataService.createDocument("MyCollection", newDoc).then(function (doc) {
                    console.log("Doc id: " + doc.id);
                });
            });
        });
    } else {
        console.log('SDK is not defined');
    }
});

额外检查项

  • 确认扩展清单权限
    在vss-extension.json中必须声明数据存储相关权限,否则服务调用会被拒绝:

    "scopes": [
      "vso.extension.data"
    ]
    

    若需要写入数据,确保包含对应权限(如vso.extension.data_write)。

  • 验证SDK版本
    确保使用的SDK.min.js是兼容版本,避免旧版本的API差异导致服务获取失败。

  • 重新部署扩展
    若修改了扩展清单或代码,需重新打包扩展并上传到Azure DevOps组织,更新已安装的扩展后再测试。

内容的提问来源于stack exchange,提问作者cob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:48:30