2***@qq.com
2***@qq.com
  • 发布:2025-12-29 15:41
  • 更新:13 分钟前
  • 阅读:24

【报Bug】新创建的uts插件运行就报错

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: m2

HBuilderX类型: Alpha

HBuilderX版本号: 4.76

手机系统: iOS

手机系统版本号: iOS 16

手机厂商: 苹果

手机机型: 苹果14pm

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

以下是实例中的uts代码:
/**

  • 引用 iOS 系统库,示例如下:
  • import { UIDevice } from "UIKit";
  • [可选实现,按需引入]
    */

/ 引入 interface.uts 文件中定义的变量 /
import { MyApiOptions, MyApiResult, MyApi, MyApiSync } from '../interface.uts';

/ 引入 unierror.uts 文件中定义的变量 /
import { MyApiFailImpl } from '../unierror';

/**

  • 引入三方库
  • [可选实现,按需引入]
  • 在 iOS 平台引入三方库有以下两种方式:
  • 1、通过引入三方库framework 或者.a 等方式,需要将 .framework 放到 ./Frameworks 目录下,将.a 放到 ./Libs 目录下。更多信息详见
  • 2、通过 cocoaPods 方式引入,将要引入的 pod 信息配置到 config.json 文件下的 dependencies-pods 字段下。详细配置方式详见
  • 在通过上述任意方式依赖三方库后,使用时需要在文件中 import:
  • 示例:import { LottieLoopMode } from 'Lottie'
    */

/**

  • UTSiOS 为平台内置对象,不需要 import 可直接调用其API,详见
    */

/**

  • 异步方法
  • uni-app项目中(vue/nvue)调用示例:
  • 1、引入方法声明 import { myApi } from "@/uni_modules/uts-api"
  • 2、方法调用
  • myApi({
  • paramA: false,
  • complete: (res) => {
  • console.log(res)
  • }
  • });
  • */
    export const myApi : MyApi = function (options : MyApiOptions) {

    if (options.paramA == true) {
    // 返回数据
    const res : MyApiResult = {
    fieldA: 85,
    fieldB: true,
    fieldC: 'some message'
    };
    options.success?.(res);
    options.complete?.(res);

    } else {
    // 返回错误
    let failResult = new MyApiFailImpl(9010001);
    options.fail?.(failResult)
    options.complete?.(failResult)
    }

}

/**

  • 同步方法
  • uni-app项目中(vue/nvue)调用示例:
  • 1、引入方法声明 import { myApiSync } from "@/uni_modules/uts-api"
  • 2、方法调用
  • myApiSync(true);
  • */
    export const myApiSync : MyApiSync = function (paramA : boolean) : MyApiResult {
    // 返回数据,根据插件功能获取实际的返回值
    const res : MyApiResult = {
    fieldA: 85,
    fieldB: paramA,
    fieldC: 'some message'
    };
    return res;
    }

/**

  • 更多插件开发的信息详见:https://uniapp.dcloud.net.cn/plugin/uts-plugin.html
    */

以下是页面中调用代码:
import { myApiSync} from "@/uni_modules/jsh-ldd";
onLoad() {
console.log(6728367823648,myApiSync(true))
},

操作步骤:

根据bug描述操作

预期结果:

正常运行

实际结果:

不能正常运行

bug描述:

刚创建的uts插件,把import { UIDevice } from "UIKit";这一行放出来(原本是注释的)然后重新运行编译就报 ‘注意编译阶段有报错,可能部分模块无法使用。’,后面注释掉这一行都不行,就一只报这个,还有启动uts调试,等好久都不行,一直在启动中

2025-12-29 15:41 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

@DCloud_UNI_OttoJi

DCloud_UNI_yuhe

DCloud_UNI_yuhe

是不是没有用自定义基座运行?

Ask小助手

Ask小助手

该bug反馈内容基本完整,包含标题、描述、代码示例、复现步骤及结果,但缺少具体错误日志和已尝试的解决方案细节。代码示例可直接运行,复现步骤描述较模糊(仅"按bug描述操作"),需补充创建插件、添加代码的具体流程。

经分析,此问题并非真实bug,而是概念理解偏差:

  1. UTS插件架构要求平台特定代码必须放在对应平台目录(如iOS代码应置于utssdk/app-ios/),而非根目录直接引用原生库。用户直接在根目录.uts文件中import { UIDevice } from "UIKit"违反设计规范,导致编译失败。
  2. 根据UTS插件开发指南,正确做法是:
    • interface.uts定义统一接口
    • app-ios/index.uts中实现iOS逻辑并引用UIKit
    • 根目录文件仅做跨平台桥接
  3. HBuilderX 4.76版本存在已知编译问题(如4.75版本引发的type类型嵌套编译失败),建议升级至最新正式版。
  4. 调试卡住是因编译错误阻塞流程,非独立问题。

解决方案:重构插件结构,按平台分离代码,参考UTS插件示例。无需更新HBuilderX即可解决,属开发规范理解问题。

内容为 AI 生成,仅供参考

要回复问题请先登录注册