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
相关产品推荐
相关产品推荐

