收藏
回答

miniprogram-ci

https://developers.weixin.qq.com/miniprogram/dev/devtools/ci.html

通过异步的方式 上传一个小程序成功之后再上传另一个提示child process stderr: getAppJSON error TypeError: Cannot destructure property 'setting' of 'r' as it is undefined.这个是什么问题呢

回答关注问题邀请回答
收藏

4 个回答

  • yao
    yao
    11-19

    我怀疑这里是因为 const ci = require('miniprogram-ci'); 的 ci 对象在第一次的上传操作过程中被污染,如果要继续上传其他 appId,会程序出错。

    我这里是起了个子进程来处理 miniprogram-ci 的遍历工作的。

    把 miniprogram-ci 的工作单独放到一个 js 文件中

    // child.js
    const ci = require('miniprogram-ci');
    
    process.on('message', async (data) => {
      const project = new ci.Project({ ... });
      const uploadResult = await ci.upload({ ... })
      process.send(''); // 返回处理结果
      process.exit(); // 结束子进程
    });
    
    


    然后在主进程中定义 publishMiniProgram 方法

    const { fork } = require('child_process');
    
    function publishMiniProgram(options) {
      return new Promise((resolve, reject) => {
        const child = fork('./child.js');
        child.send(options); // 向子进程发送数据
        child.on('message', resolve); // 接收子进程返回的数据
        child.on('error', reject); // 捕获子进程的错误
        child.on('exit', (code) => {
          if (code !== 0) {
            reject(new Error(`exit code: ${code}`));
          }
        });
      });
    }
    


    最后在遍历里面调用 publishMiniProgram。


    11-19
    有用 1
    回复
  • 昨夜一壶酒
    昨夜一壶酒
    11-09

    同样报错,有解决方案吗??

    11-09
    有用
    回复
  • 哈
    06-17

    老哥这个问题解决了吗

    06-17
    有用
    回复
  • z
    z
    06-03

    代码和官方的demo基本一致 只是多了一个上一个上传完毕就上传下一个的逻辑

    06-03
    有用
    回复 4
    • 好人
      好人
      发表于移动端
      06-03
      爱用用
      06-03
      回复
    • 哈
      06-17回复好人
      不用滚是吧
      06-17
      回复
    • 🤫
      🤫
      07-16
      你新开启一个线程,线程结束之后,无论是否成功,都kill关闭这个线程,再次任务开始的时候再新打开。就可以解决多次上传的问题了
      07-16
      回复
    • 那就这样吧
      那就这样吧
      10-16
      解决啦吗,求教
      10-16
      回复
登录 后发表内容