收藏
回答

miniprogram-ci上传代码和开发者工具上传代码功能行为不一致

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows miniprogram-ci是1.8.18,开发者工具是1.05.2204250

问题描述

miniprogram-ci上传的小程序代码,在一些iPhone手机上,会发现不能绑定数据;但是同样的代码,使用开发者工具上传,就不会有问题。

目标环境

iPhone 12,系统版本是14.5.1,微信的版本是 8.0.20。

复现步骤

  1. 使用uni-app作为开发框架
  2. 然后编写node-js脚本使用uni-app的命令行工具编译项目
  3. 使用miniprogram-ci去分析uni-app编译的代码,剔除无依赖文件
  4. 使用miniprogram-ci上传;使用开发者工具上传;

uni编译

  spawn.sync('uni', ['build', '-p', 'mp-weixin'], { stdio: 'inherit' });


分析小程序模块

    console.info('对编译产物进行代码分析\n');
    const analyseResult = await ci.analyseCode(
      new ci.Project({
        appid: item.appid,
        type: 'miniProgram',
        projectPath: path.resolve(__dirname, '../dist/build/mp-weixin'),
        privateKeyPath: item.privateKeyPath,
        ignores: [],
      }),
    );
    console.info('移除无依赖文件\n');
    const exts = new Set(['.js', '.wxss', '.wxml', '.json']);
    analyseResult.files.forEach(item => {
      if (exts.has(item.ext) && item.moduleId === null) {
        console.log(`${item.path} ${item.size}\n`);
        fs.unlinkSync(path.resolve(__dirname, '../dist/build/mp-weixin/', item.path));
      }
    });


上传小程序代码

    console.info('上传编译产物到微信云\n');
    /**
     * miniprogram-ci的源代码是没有公开的,我在测试的过程中发现ci.Project这个类,会缓存项目包含的文件。
     * 也就是说,如果你对项目进行了分析,分析完成之后删除了无依赖文件,之前new ci.Project出来的实例对象是不会有任何更新的。
     * 如果你依然使用同一个ci.Project实例对象去执行ci.upload,那么ci就会抛出文件不存在的异常。
     */
    const now = new Date();
    const uploadResult = await ci.upload({
      desc: `[${now.toLocaleString()}] CI Uploaded`,
      project: new ci.Project({
        appid: item.appid,
        type: 'miniProgram',
        projectPath: path.resolve(__dirname, '../dist/build/mp-weixin'),
        privateKeyPath: item.privateKeyPath,
        ignores: [],
      }),
      robot: 2,
      setting: {},
      version: package.version,
      onProgressUpdate: task => {
        if (task.status === 'done') {
          console.log(`[${task.id}] ${task.message}`);
        }
      },
    });
    console.info('上传完成,上传结果:\n');
    console.log(uploadResult);
回答关注问题邀请回答
收藏

1 个回答

  • Sinner
    Sinner
    2023-01-17

    大兄弟找到问题所在了吗?我这也是这种情况,工具上传没问题,脚本上传,就会有问题

    2023-01-17
    有用
    回复
登录 后发表内容