使用ns publish ios发布iOS应用因App Store Connect API空响应报错
NativeScript发布iOS应用到App Store Connect报错解决方案
故障表现
使用NativeScript发布基于Angular构建的iOS应用到App Store Connect时,IPA构建步骤可正常完成,后续CLI连接App Store Connect接口拉取应用数据阶段抛出错误,无法完成应用推送。
已确认传入的Apple ID、应用专用密码、发布描述文件等参数均符合要求,数月前使用完全相同的流程、参数配置曾成功发布过该应用,可排除基础参数配置错误。
执行命令
使用的发布命令如下:
ns publish ios <appleid> <appleidpassword> <provisioningprofile> --appleApplicationSpecificPassword <apppassword> --log trace
报错信息
IPA构建完成后抛出的JS错误如下:
TypeError: Cannot read property 'summaries' of null at ApplePortalApplicationService.<anonymous> (/usr/local/lib/node_modules/nativescript/lib/services/apple-portal/apple-portal-application-service.js:27:53) at Generator.next (<anonymous>) at fulfilled (/usr/local/lib/node_modules/nativescript/lib/services/apple-portal/apple-portal-application-service.js:5:58) at processTicksAndRejections (internal/process/task_queues.js:97:5)
日志排查结果
开启trace日志追踪后确认,CLI发起的接口请求本身返回HTTP 200状态码,但响应体未返回有效业务数据:
请求详情:
httpRequest: { url: 'https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/apps/manageyourapps/summary/v2', method: 'GET', body: { contentProviderId: <redacted>}, headers: { 'Content-Type': 'application/json', Cookie: '<redacted>', 'User-Agent': 'tnsCLI/8.2.3 (Node.js 12.22.7; darwin; x64)', 'Accept-Encoding': 'gzip,deflate' } } httpRequest: Done. code = 200
接口返回内容:
{ "data": null, "messages": { "warn": null, "error": null, "info": null }, "statusCode": "SUCCESS" }
根因说明
该问题由两方面原因共同导致:
- NativeScript 8.2.3及更早版本的CLI,调用的是苹果未公开的旧版App Store Connect私有接口,苹果后续对该接口做了鉴权规则收紧、返回逻辑调整,未携带新版校验头的请求不会返回真实应用列表数据
- 若苹果开发者账号存在未同意的最新平台协议、未补全的税务/付费协议信息,旧接口会直接返回空数据,而非错误提示
修复方案
按优先级依次尝试以下方案:
- 账号状态校验
分别登录苹果开发者中心、App Store Connect后台,检查是否存在待确认的协议更新、待补全的账户/税务/银行信息,所有待办项处理完毕后再重试发布命令 - 升级NativeScript CLI
将本地安装的NativeScript CLI升级到最新正式版,新版已经适配苹果调整后的接口鉴权规则,修复了旧接口返回空数据导致的空指针报错 - 手动上传IPA绕开CLI内置发布逻辑
如果升级CLI后问题仍存在,可跳过CLI的自动上传步骤:- 执行
ns build ios --release --forDevice --provision <你的发布描述文件标识>单独构建发布版IPA包 - 打开Mac端的Transporter工具(苹果官方上传工具,可在App Store免费下载),登录对应开发者账号
- 把构建好的、存放在
platforms/ios/build/Release-iphoneos路径下的ipa包拖入Transporter,完成校验后直接上传即可
该方式不依赖CLI对苹果私有接口的适配,稳定性最高。
- 执行
内容的提问来源于stack exchange,提问作者Mick0n
相关产品推荐
相关产品推荐

