VS Code使用DefaultAzureCredential连接Azure Digital Twins出现getToken错误
故障解决:Azure Digital Twins JS SDK调用时AzureCliCredential.getToken报JSON输入意外结束错误
根因说明
该错误是@azure/identity包调用Azure CLI获取访问令牌时,拿到的输出内容并非合法JSON格式,导致解析失败,和业务代码逻辑无关,常见触发原因包括Windows终端编码不兼容、运行会话不匹配、SDK版本兼容问题。
解决方案
- 确认运行会话一致性:不要使用VS Code右上角的一键运行功能,直接在你已经执行过
az login、验证过az account get-access-token命令可正常返回令牌的Powershell终端中,执行node index.js运行代码。VS Code一键运行会新开独立的终端进程,该进程不会继承你之前登录的Azure CLI凭证,且如果默认终端为CMD会导致输出编码异常,触发JSON解析错误。 - 统一终端编码为UTF-8:在运行代码的Powershell终端先执行以下命令,修正编码问题,避免Azure CLI返回的JSON带不可见乱码:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
如果需要永久生效,可将该配置写入Powershell的用户配置文件中。
- 设置对应默认订阅:确保当前Azure CLI的默认订阅为Azure Digital Twins实例所在的订阅,执行命令指定:
az account set --subscription "你的ADT实例所属的订阅ID或订阅名称"
- 降级@azure/identity到兼容版本:部分高版本
@azure/identity在Windows环境下的AzureCliCredential逻辑存在已知兼容问题,可执行命令安装稳定兼容版本测试:
npm install @azure/identity@2.1.0
内容的提问来源于stack exchange,提问作者SJS Bowley
相关产品推荐
相关产品推荐

