4***@qq.com
4***@qq.com
  • 发布:2026-02-07 23:55
  • 更新:2026-02-07 23:56
  • 阅读:22

【报Bug】引入@volcengine/tos-sdk SDK时 编译微信小程序会导致一直卡在 开始差量编译... 无法热更新

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.81

第三方开发者工具版本号: 2.01.25

基础库版本号: 3.14.1

项目创建方式: HBuilderX

示例代码:
// #ifdef MP-WEIXIN  
import { TosClient } from "@volcengine/tos-sdk";  
import { getTOSStsCredential } from "@/api/api";  

function wxUploadToTOS(path) {  
  return new Promise(async (resolve, reject) => {  
    let resToss = await getTOSStsCredential();  
    let resData = resToss.data.data;  

    // 创建客户端  
    const client = new TosClient({  
      accessKeyId: resData.AccessKeyId, // 从 STS 服务获取的临时访问密钥 AccessKey ID  
      accessKeySecret: resData.SecretAccessKey, // 从 STS 服务获取的临时访问密钥 AccessKey Secret  
      stsToken: resData.SessionToken, // 从 STS 服务获取的临时访问 Session Token  
      region: resData.region, // 填写Bucket 所在地域。以华北2(北京)为例,"Provide your region" 填写为 cn-beijing。  
    });  
    const bucket = resData.bucket;  
    const key = resData.dir + path.split("/").pop(); // 上传到桶中的对象键(Key),例如:exampleobject.txt  

    //为了您的数据安全,建议使用签名方式上传文件。具体可以参考https://www.volcengine.com/docs/6349/113484  
    //关于 POST 表单预签名的详细信息,请参见基于浏览器上传的表单中包含签名。  
    const formData = await client.calculatePostSignature({  
      bucket,  
      key,  
      expiresIn: 36000,  
      // 如果需要添加自定义字段,可以增加如下代码  
      //fields: {  
      //  'key': 'value'  
      // }  
    });  
    // bucketHost 替换成对应桶域名 ${bucket}.tos-${region}.volces.com  
    const bucketHost = resData.bucket + "." + resData.endpoint;  
    const url = `https://${bucketHost}/${encodeURI(key)}`;  

    wx.uploadFile({  
      filePath: path,  
      name: "file", // 固定为 file  
      url,  
      formData,  
      success: async (res) => {  
        if (res.statusCode === 204) {  
          resolve({  
            url: url,  
            key: key,  
            bucket: bucket,  
          });  
        }  
      },  
      fail: (err) => {  
        console.log(err);  
        reject(err);  
      },  
    });  
  });  
}  

export default wxUploadToTOS;  
// #endif

操作步骤:

只要引入该插件就会出现 卡在 开始差量编译

预期结果:

预期可以正常热更新

实际结果:

实际无法自动更新

bug描述:

引用 火山云SDK的时候 编译始终卡在 开始差量编译,必须手动点击重新编译才能正常运行
https://www.volcengine.com/docs/6349/1127465?lang=zh
mac 系统和 win11 系统都出现同样情况

2026-02-07 23:55 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

【官方评审意见】

一、反馈完整性评估

  1. 标题与分类:已给出平台(微信小程序)、HBuilderX 版本(4.81)、操作系统(Win11 / macOS),信息基本完整。
  2. BUG 描述:说明了“差量编译卡住、必须手动重新编译”的现象,但未提供:
    • 卡住时 HBuilderX 控制台/日志的具体输出;
    • 卡住时是否伴随 CPU 飙高、内存暴涨等系统表现;
    • 最小可复现仓库(去掉业务代码,仅保留 import 语句即可)。
  3. 代码示例:给出了业务调用逻辑,但示例中仍依赖后端接口 getTOSStsCredential,官方无法直接运行。需要补充一个“最小复现片段”,例如:
    // 仅保留引入语句即可复现  
    // #ifdef MP-WEIXIN  
    import { TosClient } from "@volcengine/tos-sdk";  
    console.log(TosClient);  
    // #endif  
  4. 复现步骤:仅写“只要引入该插件就会出现”,过于笼统。需要补充:
    • 新建空白 Hello-uni-app 工程 → npm 安装 @volcengine/tos-sdk → 在 pages/index.vue 添加上述 import → 运行到微信小程序。
  5. 预期 / 实际结果:描述合理,无歧义。

结论:信息基本可用,但仍需补充“最小复现仓库”和“差量编译卡住时的日志”才能 100 % 定位。

二、Bug 是否成立
在知识库中未找到“引入 @volcengine/tos-sdk 导致差量编译卡住”的已知 issue,也没有发现该 SDK 被列入“不兼容清单”。因此暂按“新 issue”处理。

三、可能原因与下一步建议

  1. 该 SDK 体积较大(>1 MB)且为 CommonJS 打包格式,在微信小程序差量编译阶段会触发全量依赖分析,可能导致编译线程长时间占用。
  2. 建议用户先做以下自检,并将结果补充到 issue:
    • 使用空白工程仅保留 import { TosClient } from "@volcengine/tos-sdk",观察是否仍卡住;
    • 在 HBuilderX → 帮助 → 查看运行日志,把“差量编译”阶段的最后 50 行日志贴出来;
    • manifest.json → “微信小程序” → 勾选 使用分包优化 后重试,看是否仍复现。
  3. 若空白工程可复现,官方将转给编译器团队;若仅在业务工程复现,则大概率是 node_modules 里存在循环依赖或超大文件,需要用户按“最小复现”原则裁剪。

四、临时规避方案

  • 在开发阶段改用条件编译将该 SDK 排除:
    // #ifndef H5 || APP-PLUS  
    import { TosClient } from "@volcengine/tos-sdk";  
    // #endif  
  • 或者在 vue.config.js 中通过 chainWebpack/externals 把该包排除,改用 CDN 方式在运行时加载(仅 H5 可用)。

五、结论
反馈有效,但需补充“最小复现仓库 + 编译日志”。请用户按上述自检步骤补充信息,官方将在收到补充后 1 个工作日内给出进一步结论。

内容为 AI 生成,仅供参考

要回复问题请先登录注册