- 小程序分包和开放平台
通过这种方式上传的代码,使用到了小程序的分包 https://developers.weixin.qq.com/miniprogram/dev/devtools/ext.html - 当前 Bug 的表现(可附上截图) 体验版小程序一直是加载中,初步判断分包加载不支持这种打包提交方式。 [图片] - 预期表现 分包正常加载 - 复现路径 - 提供一个最简复现 Demo 支持分包加载的小程序,并且配置了directCommit=ture,然后通过体验版二维码访问小程序,就会出现分包加载不成功。
2018-11-08 - 第三方平台模板上传小程序代码的问题
我们是一个第三方平台,通过模板来给商户做小程序。 但是我们模板小程序上有很多行业模板,通过是分包的方式 而商家小程序可能只需要加载一两个包就可以,我通过https://api.weixin.qq.com/wxa/commit?access_token=接口,上传代码时指定“subPackages”,但是好象不生效 如果不指定,就会将整个模板小程序代码上传到商家小程序,审核的时候就会不通过,说我小程序有隐藏没用到的代码,未在前端展示 但不可能为每一个小程序去除相关代码后上传一个模板ID,因为我们有二十多个subPackages,每个小程序需要的subPackages都不一样。如果解决不了,可以直接导致使用模板ID开发的第三方平台的小程序无法审核成功 综上,对于我们这种情况怎么办?
2018-08-12 - 开发者工具v1.02.1810250上传接口报错
-------------------------------------- 最新更新 11.01号 -------------------------------- 问题已自行解决:在上传代码前,打开一次将要上传的项目。 [代码] //打开指定目录的项目[代码][代码] [代码][代码]$strIDEPath[代码] [代码]= [代码][代码]$this[代码][代码]->_strWxidePath;[代码][代码] [代码][代码]$strDriverPath[代码] [代码]= [代码][代码]substr[代码][代码]([代码][代码]$strIDEPath[代码][代码], 0, 2);[代码] [代码]exec[代码][代码]([代码][代码]"$strDriverPath && cd $strIDEPath && cli -o $strProjectPath 2>&1"[代码][代码]);[代码]存在的问题:打开项目的过程中还是会报 runtimeAttr 的错误,虽然并不会影响之后上传流程。 StatusCodeError: 400 - "{\"code\":40000,\"error\":\"错误 {\\\"code\\\":40000,\\\"error\\\":\\\"错误 TypeError: Cannot read property 'runtimeAttr' of undefined\\\"}\"}" [图片] -------------------------------------- 以下是历史问题 ---------------------------------- 更新了最新版的微信开发者工具后,调用HTTP接口上传代码,爆出的错误: {"code":40000,"error":"错误 {\"code\":40000,\"error\":\"错误 TypeError: Cannot read property 'runtimeAttr' of undefined\"}"} 代码调用流程(PHP命令行模式,workerman框架): 1、onWorkerStart,进程初始化时(之后不再执行),命令行调用打开工具 [代码] /**[代码][代码] [代码][代码]* php命令行调取微信开发者工具[代码][代码] [代码][代码]* @param array $aInput [in]参数列表,暂无,填空数组即可[代码][代码] [代码][代码]* @param array $aOutput [out]输出结果,如果成功,则返回[代码][代码] [代码][代码]* <pre>[代码][代码] [代码][代码]* port - int .ide端口号[代码][代码] [代码][代码]* </pre>[代码][代码] [代码][代码]* @return boolean[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]public[代码] [代码]function[代码] [代码]openWxideCli([代码][代码]array[代码] [代码]$aInput[代码][代码], [代码][代码]array[代码] [代码]&[代码][代码]$aOutput[代码] [代码]= [])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$strIDEPath[代码] [代码]= [代码][代码]$this[代码][代码]->_strWxidePath;[代码][代码] [代码][代码]$strDriverPath[代码] [代码]= [代码][代码]substr[代码][代码]([代码][代码]$strIDEPath[代码][代码], 0, 2);[代码][代码] [代码][代码]$nOpenRet[代码] [代码]= 1;[代码][代码] [代码][代码]$aOpenOut[代码] [代码]= [];[代码][代码] [代码][代码]exec[代码][代码]([代码][代码]"$strDriverPath && cd $strIDEPath && cli.bat 2>&1"[代码][代码], [代码][代码]$aOpenOut[代码][代码], [代码][代码]$nOpenRet[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]$nOpenRet[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$this[代码][代码]->setError([代码][代码]'开启微信开发者工具命令行失败!'[代码][代码]);[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]//匹配出端口号[代码][代码] [代码][代码]$strPattern[代码] [代码]= [代码][代码]'/http:\/\/127\.0\.0\.1:([\d]+)/'[代码][代码];[代码] [代码] [代码][代码]foreach[代码] [代码]([代码][代码]$aOpenOut[代码] [代码]as[代码] [代码]$line[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$aMatch[代码] [代码]= [];[代码][代码] [代码][代码]if[代码] [代码](preg_match([代码][代码]$strPattern[代码][代码], [代码][代码]$line[代码][代码], [代码][代码]$aMatch[代码][代码]))[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$aOutput[代码][代码][[代码][代码]'port'[代码][代码]] = [代码][代码]intval[代码][代码]([代码][代码]$aMatch[代码][代码][1]);[代码][代码] [代码][代码]break[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]true;[代码][代码] [代码][代码]}[代码] [图片] 2、onMessage监听我们平台的上传代码请求,然后调用工具的HTTP上传接口,就是在这里返回的错误 [代码] /**[代码][代码] [代码][代码]* php命令行调取微信开发者工具HTTP上传接口[代码][代码] [代码][代码]* @param array $aInput [in]参数列表[代码][代码] [代码][代码]* <pre>[代码][代码] [代码][代码]* project_path - string 必填 需要上传的项目路径[代码][代码] [代码][代码]* version - string 必填 版本号[代码][代码] [代码][代码]* desc - string 选填 版本描述[代码][代码] [代码][代码]* </pre>[代码][代码] [代码][代码]* @param array $aOutput [out]输出结果[代码][代码] [代码][代码]* @return boolean[代码][代码] [代码][代码]*/[代码][代码] [代码][代码]public[代码] [代码]function[代码] [代码]wxideCliUpload([代码][代码]array[代码] [代码]$aInput[代码][代码], [代码][代码]array[代码] [代码]&[代码][代码]$aOutput[代码] [代码]= [])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]if[代码] [代码](![代码][代码]$this[代码][代码]->_checkFields([代码][代码]$aInput[代码][代码], [[代码][代码]'project_path'[代码][代码], [代码][代码]'version'[代码][代码], [代码][代码]'desc'[代码][代码]], [], true))[代码][代码] [代码][代码]{[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]$strProjectPath[代码] [代码]= [代码][代码]$aInput[代码][代码][[代码][代码]'project_path'[代码][代码]];[代码][代码] [代码][代码]$strVersionNum[代码] [代码]= [代码][代码]$aInput[代码][代码][[代码][代码]'version'[代码][代码]];[代码][代码] [代码][代码]$strDesc[代码] [代码]= [代码][代码]$aInput[代码][代码][[代码][代码]'desc'[代码][代码]];[代码][代码] [代码][代码]$nPort[代码] [代码]= [代码][代码]$aInput[代码][代码][[代码][代码]'wxide_port'[代码][代码]];[代码][代码] [代码] [代码] [代码][代码]//echo $nPort."\n";[代码][代码] [代码] [代码] [代码][代码]if[代码][代码](![代码][代码]$nPort[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$aOpenResult[代码] [代码]= [];[代码][代码] [代码][代码]if[代码] [代码](![代码][代码]$this[代码][代码]->openWxideCli([], [代码][代码]$aOpenResult[代码][代码]))[代码][代码] [代码][代码]{[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码][代码] [代码][代码]$nPort[代码] [代码]= [代码][代码]$aOpenResult[代码][代码][[代码][代码]'port'[代码][代码]];[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]//http上传代码[代码][代码] [代码][代码]$_oCurlService[代码] [代码]= [代码][代码]new[代码] [代码]CurlService();[代码][代码] [代码][代码]$url[代码] [代码]= [代码][代码]'http://127.0.0.1:'[代码] [代码]. [代码][代码]$nPort[代码] [代码]. [代码][代码]'/upload?projectpath='[代码] [代码]. urlencode([代码][代码]$strProjectPath[代码][代码])[代码][代码] [代码][代码]. [代码][代码]'&version='[代码] [代码]. [代码][代码]$strVersionNum[代码][代码];[代码] [代码] [代码][代码]if[代码] [代码](![代码][代码]empty[代码][代码]([代码][代码]$strDesc[代码][代码]))[代码][代码] [代码][代码]{[代码][代码] [代码][代码]$url[代码] [代码].= [代码][代码]'&desc='[代码] [代码]. urlencode([代码][代码]$strDesc[代码][代码]);[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]$result[代码] [代码]= [代码][代码]''[代码][代码];[代码][代码] [代码][代码]$bResponse[代码] [代码]= [代码][代码]$_oCurlService[代码][代码]->get([代码][代码]$url[代码][代码], [代码][代码]$result[代码][代码]);[代码] [代码] [代码][代码]if[代码] [代码](![代码][代码]$bResponse[代码][代码])[代码][代码] [代码][代码]{[代码][代码] [代码][代码]echo[代码] [代码]date[代码][代码]([代码][代码]'Y-m-d H:i:s'[代码][代码]) . PHP_EOL;[代码][代码] [代码][代码]echo[代码] [代码]$strProjectPath[代码] [代码]. PHP_EOL;[代码][代码] [代码][代码]echo[代码] [代码]$result[代码] [代码]. PHP_EOL;[代码][代码] [代码][代码]echo[代码] [代码]$nPort[代码][代码].PHP_EOL;[代码][代码] [代码][代码]$aResponse[代码] [代码]= json_decode([代码][代码]$result[代码][代码], true);[代码][代码] [代码][代码]$this[代码][代码]->setError([代码][代码]$aResponse[代码][代码][[代码][代码]'code'[代码][代码]]);[代码][代码] [代码][代码]return[代码] [代码]false;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]return[代码] [代码]true;[代码][代码] [代码][代码]}[代码]命令行输出错误信息: [图片] [图片] 3、项目配置文件模板 project.config.json [代码]{[代码][代码] [代码][代码]"description"[代码][代码]: [代码][代码]"项目配置文件。"[代码][代码],[代码][代码] [代码][代码]"packOptions"[代码][代码]: {[代码][代码] [代码][代码]"ignore"[代码][代码]: [][代码][代码] [代码][代码]},[代码][代码] [代码][代码]"setting"[代码][代码]: {[代码][代码] [代码][代码]"urlCheck"[代码][代码]: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]"es6"[代码][代码]: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]"postcss"[代码][代码]: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]"minified"[代码][代码]: [代码][代码]true[代码][代码],[代码][代码] [代码][代码]"newFeature"[代码][代码]: [代码][代码]true[代码][代码] [代码][代码]},[代码][代码] [代码][代码]"compileType"[代码][代码]: [代码][代码]"miniprogram"[代码][代码],[代码] [代码] //上传时会替换为具体的appid[代码] [代码] [代码][代码]"appid"[代码][代码]: [代码][代码]"__DEVELOPERAPPID__"[代码][代码],[代码] [代码] //上传时会替换为具体的名称[代码] [代码] [代码][代码]"projectname"[代码][代码]:[代码][代码]"__PROJECTNAME__"[代码][代码]}[代码]
2018-11-01 - 跳转小程序调整疑问
基础库2.4.0版本以后,跳转小程序需再app.json中配置navigateToMiniProgramAppIdList。使用开发者工具上传代码navigateToMiniProgramAppIdList可以配置,第三方平台怎么办,请告知
2018-11-06