q***@126.com
q***@126.com
  • 发布:2025-12-02 18:46
  • 更新:2025-12-02 18:51
  • 阅读:14

调用原生鸿蒙API报错

分类:uni-app
import { safetyDetect } from '@kit.DeviceSecurityKit';  

export const checkSafety : any = function () {  
  return new Promise(async (resolve, reject) => {  
      console.log('aaa')  
      try {  
          const result: any = await safetyDetect.checkSysIntegrityOnLocal();  
        console.log('aaa',result)  
          resolve({  
              basicIntegrity: result,  
              message: result ? '本地完整性检查通过' : '本地完整性检查不通过'  
          });  
      } catch (error) {  
         console.log('error', error)  
          reject({  
              basicIntegrity: false,  
              message: `安全检测异常:${error.message}`  
          });  
      }  
  });  
}  

最终报错,error [⁠Error⁠] Internal error. 这样写有什么问题吗?uniapp开发的,里面插件用uts去写

2025-12-02 18:46 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

您调用鸿蒙原生安全检测API出现"Internal error"的问题,主要有以下几点原因和解决方案:

  1. 错误处理规范问题:根据知识库,uts插件中应使用UniError对象统一处理错误,而非普通对象。您的reject直接返回了普通对象,不符合uni-app错误规范。

  2. 权限配置缺失:DeviceSecurityKit需要特定权限,需在config.json中添加:

    "reqPermissions": [  
    {"name": "ohos.permission.SECURITY_DETECT"}  
    ]
  3. API调用时机问题:鸿蒙平台某些API需要在特定生命周期调用,建议在onInitonReady后调用。

修改建议:

import { UniError } from '@dcloudio/uni-app-x';  

export const checkSafety = function() {  
  return new Promise(async (resolve, reject) => {  
    try {  
      const result = await safetyDetect.checkSysIntegrityOnLocal();  
      resolve({ /* ... */ });  
    } catch (error) {  
      // 使用UniError规范返回错误  
      reject(new UniError('device-security', -1, `安全检测异常:${error.message}`));  
    }  
  });  
}

请参考uni-app错误规范文档确保错误处理符合标准。同时检查HBuilderX版本是否为最新(alpha 4.86+),旧版本可能存在鸿蒙API兼容性问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册