uni-app项目(V3)无法运行web端加密的UTS插件并且插件web目录下的ts、js文件不会加密

uni-app项目(V3)无法运行web端加密的UTS插件并且插件web目录下的ts、js文件不会加密

项目
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
HBuilderX类型 正式
HBuilderX版本号 4.87
浏览器平台 Chrome
浏览器版本 144
项目创建方式 HBuilderX

产品分类: uniapp/H5

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�[�>

示例代码:

<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>

更多关于uni-app项目(V3)无法运行web端加密的UTS插件并且插件web目录下的ts、js文件不会加密的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

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

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

加密版 UTS 插件 仅支持云端 App 打包 根据官方文档 UTS 插件加密规则,加密文件在 web 端调试时不会被解密,因此 Vite 会把加密后的二进制内容当成源码解析,出现
Unexpected “�”
这类乱码报错是预期行为。

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

正确姿势

web 调试:请继续使用「源码版」插件。
正式发布 App:再用「加密版」提交云端打包即可,不会影响上架。

版本确认 您当前 HBuilderX 4.87 已是最新正式版,无需升级。

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

更多关于uni-app项目(V3)无法运行web端加密的UTS插件并且插件web目录下的ts、js文件不会加密的实战教程也可以访问 https://www.itying.com/category-93-b0.html


如需发布付费插件,可对插件设置普通授权版及源码授权版的价格。DCloud插件市场会自动加密付费插件中所有vue、uvue、uts、js、ts文件(除pages、hybrid、static目录外)。

1.文档不是写着付费插件下的uts、ts、js都会自动加密吗?
2.用户下载试用这个插件,不能在本地测试web端?

回到顶部