叶柳垂杨
叶柳垂杨
  • 发布:2026-01-27 11:12
  • 更新:2026-01-27 11:13
  • 阅读:19

【报Bug】uniapp项目(V3)无法运行web端加密的UTS插件,并且插件web目录下的ts、js文件不会加密

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.87

浏览器平台: Chrome

浏览器版本: 144

项目创建方式: HBuilderX

示例代码:
<template>  
    <view>  
        <view class="area">  
            <textarea @input="iptHandle"  
                style="width: 100%;border: 1px solid #ccc;padding: 15px;background-color: #f2f2f2;margin-bottom: 15px;" />  
            <button type="default" @click="start">文本转语音播报</button>  
            <button type="default" @click="stop">播报暂停</button>  
            <button type="default" @click="getEnginesList">获取手机播报引擎</button>  
        </view>  
        <view class="eng-list" style="padding: 15px;">  
            <view class="title">  
                <text style="font-weight: bold;font-size: 20px;margin-bottom: 10px;">播报情况:</text>  
            </view>  
            <view v-for="(i,k) in engineList" :key='k' class="item">  
                {{i}}  
            </view>  
        </view>  
    </view>  
</template>  

<script lang="ts" setup>  
    import {ref} from 'vue';  
    import { startSpeech, getEngines, stopSpeech, continueSpeech, pauseSpeech } from "@/uni_modules/xwq-tts-speaker";  
    import { Option, Info } from "@/uni_modules/xwq-tts-speaker/utssdk/interface.uts";  

    const iptVal = ref("");  
    const engineList = ref([]);  
    let num=0;  

    const iptHandle = (e : UniInputEvent) => {  
        iptVal.value = e.detail.value;  
    };  

    let repeatPlay:(() => void) | null = null;  
    repeatPlay=function(){  
        num++  
        console.log('重复播放===',num)  
        startSpeech(  
            {  
                content: iptVal.value,  
                enginesName: null, //自定义第三方TTS引擎,前提是手机上已安装  
                speechRate: 1.5,//播报速度,有些系统TTS不支持设置  
                pitch: 0.4,//语调设置,默认1,越小越像男生  
                fail: (val : Info) => {  
                    console.log(val);  
                },  
                finish: () => {  
                    console.log('播报结束');  
                    repeatPlay?.()  
                }  
            } as Option)  
    }  
    //开始播报,在开始之前要先初始化TTS,成功后再开始  
    const start = () => {  
        // repeatPlay?.()  
        startSpeech(  
            {  
                content: iptVal.value,  
                enginesName: null, //自定义第三方TTS引擎,前提是手机上已安装  
                // speechRate: 0.5,//播报速度,有些系统TTS不支持设置  
                pitch: 0.4,//语调设置,默认1,越小越像男生  
                fail: (val : Info) => {  
                    console.log(val);  
                },  
                finish: () => {  
                    console.log('播报结束')  
                    engineList.value.push(`${iptVal.value}---播报结束`)  
                }  
            } as Option)  
    };  

    //停止播报  
    const stop = () => {  
        stopSpeech();  
    };  
    //获取引擎列表,没有默认系统TTS  
    const getEnginesList = () => {  
        let result = getEngines();  
        engineList.value = result;  
    }  
</script>

操作步骤:

可以下载这个插件运行到web浏览器》》https://ext.dcloud.net.cn/plugin?id=21718

预期结果:

正常运行

实际结果:

报错

bug描述:

加密版运行报一下错误,源码版可以正常运行

10:58:34.885 [plugin:vite:esbuild] Transform failed with 1 error:
10:58:34.885 F:/git/uniapp/testV3UniappPlugin/uni_modules/xwq-tts-speaker/utssdk/web/index.uts:1:0: ERROR: Unexpected "�"
10:58:34.886 at uni_modules/xwq-tts-speaker/utssdk/web/index.uts:1:0
10:58:34.886
10:58:34.886 Unexpected "�"
10:58:34.886 1 | �k�z�z�F���QSw,؆�����D�R�x�Ց�P�[9>��t���^ӭ5GGI1?#A��<N�4�����.m�'
10:58:34.886 | ^
10:58:34.886 2 | [��x�g�[~ąZ���eY��&�6�[�>

2026-01-27 11:12 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

您好,经核实,您遇到的问题并非 Bug,而是 UTS 插件在 web 端调试阶段 的已知限制。下面为您详细说明原因及后续建议:

  1. 加密版 UTS 插件 仅支持云端 App 打包
    根据官方文档 UTS 插件加密规则,加密文件在 web 端调试时不会被解密,因此 Vite 会把加密后的二进制内容当成源码解析,出现

    Unexpected "�"  

    这类乱码报错是预期行为。

  2. web 目录下的 ts/js 文件 默认不加密
    为了方便调试,web 端始终使用源码;只有在 App 云端打包 时才会对 uts 及相关原生代码进行加密处理。

  3. 正确姿势

    • web 调试:请继续使用「源码版」插件。
    • 正式发布 App:再用「加密版」提交云端打包即可,不会影响上架。
  4. 版本确认
    您当前 HBuilderX 4.87 已是最新正式版,无需升级。

总结:
这不是框架缺陷,而是加密插件的使用边界限制。建议您 web 端保持源码版调试App 端使用加密版云打包 即可。如有进一步疑问,可在插件市场该插件页面留言或加入官方交流群继续沟通。

内容为 AI 生成,仅供参考

要回复问题请先登录注册