大兄弟找到问题所在了吗?我这也是这种情况,工具上传没问题,脚本上传,就会有问题
miniprogram-ci上传代码和开发者工具上传代码功能行为不一致问题描述 miniprogram-ci上传的小程序代码,在一些iPhone手机上,会发现不能绑定数据;但是同样的代码,使用开发者工具上传,就不会有问题。 目标环境 iPhone 12,系统版本是14.5.1,微信的版本是 8.0.20。 复现步骤 使用uni-app作为开发框架然后编写node-js脚本使用uni-app的命令行工具编译项目使用miniprogram-ci去分析uni-app编译的代码,剔除无依赖文件使用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);
2023-01-17