小程序HTTP调用无法成功?
发布于 6 年前 作者 fanjie 10438 次浏览 来自 官方Issues

通过 jenkins + gitLab 实现小程序自动化预览。

实现思路:

1)jenkins 每隔五分钟轮询 gitlab 上面的代码,如果有更新,就把代码拉下来。

2)清除原来的文件夹,重新编译(gulp 命令做的),重新安装依赖。

3)修改 ext.json 文件,通过 http 调用打开小程序,然后调用预览的 http 接口。

期望结果: 修改生效,修改完成后的小程序预览成功。实际结果:失败,文件中的 ext.json 文件虽然被修改成功,但是预览生成的依然是之前配置的小程序。

对比试验:直接手动修改小程序开发工具中的 ext.json 文件,然后再点击预览,能够成功。

#!/usr/bin/env node
 
const fs = require('fs')
const path = require("path")
function deleteDir(url){
    var files = [];
         
    if( fs.existsSync(url) ) {  //判断给定的路径是否存在
            
        files = fs.readdirSync(url);   //返回文件和子目录的数组
        files.forEach(function(file,index){
            var curPath = path.join(url,file);
                 
            if(fs.statSync(curPath).isDirectory()) { //同步读取文件夹文件,如果是文件夹,则函数回调
                deleteDir(curPath);
            } else {   
                fs.unlinkSync(curPath);    //是指定文件,则删除
            }
                 
        });
            
        fs.rmdirSync(url); //清除文件夹
    }else{
        console.log("给定的路径不存在!");
    }
 
}
deleteDir('/Users/yujiahui/.jenkins/workspace/xls/dist/')
const exec = require('child_process').execSync
exec('npm install')
exec('npm run test_build')
const content = '{"description":"项目配置文件。","setting":{"urlCheck":false,"es6":true,"postcss":true,"minified":true,"enhance":true},"miniprogramRoot":"./","compileType":"miniprogram","appid":"wxqqqqqqqqqqqqqqq","projectname":"xls","condition":{"search":{"current":-1,"list":[]},"conversation":{"current":-1,"list":[]},"plugin":{"current":-1,"list":[]},"game":{"currentL":-1,"list":[]},"miniprogram":{"current":-1,"list":[]}}}'
fs.writeFileSync('./dist/project.config.json', content, 'utf-8')
sed -i '' 's/\("extAppid": "\).*/\1wxaaaaaaaaaaa",/g' ./dist/ext.json # 修改小程序 id,并预览
sed -i '' 's/\("extTenantId": "\).*/\11aaaaaaaa",/g' ./dist/ext.json #这个是我们自定的内容
# 打开微信开发者工具
/Applications/wechatwebdevtools.app/Contents/Resources/app.nw/bin/cli -o
port=$(cat "/Users/yujiahui/Library/Application Support/微信开发者工具/Default/.ide")
echo "微信开发者工具运行在${port}端口"
return_code=$(curl -sL -w %{http_code} http://127.0.0.1:${port}/open)
if [ $return_code == 200 ]
  then
  echo "返回状态码200,devtool启动成功!"
else
  echo "返回状态码${return_code},devtool启动失败"
  exit 1
fi
echo "发布开发版!"
wget -O $BUILD_ID.png http://127.0.0.1:${port}/preview?projectpath=/Users/yujiahui/.jenkins/workspace/xls/dist

问题:sed 修改后的文件,小程序开发工具不能识别吗?依然调用的是之前的缓存,所以生成的也是之前配置中的小程序吗?

1 回复

经过验证,文件修改之后,小程序开发工具未能识别,依然读取的是缓存。通过关闭后重新打开、预览,能够生成新的小程序

回到顶部