解决Jenkins无法编译Egret5.0项目的问题

Egret4.0升级Egret5.0导致Jenkins无法编译项目

项目升级到Egret5.0,同时也把Egret的引擎工具更换为EgretLauncher,结果出现问题,原来跑得好好Jenkins,突然无法进行编译了。(以前4.0的时候是好好的)。花费了一些功夫,追踪了Egret引擎的相关编译,最终才找到解决办法。现在把这些给记录下来,主要也是方便自己升级或者降级引擎时可以查看。

Jenkins错误表现

直接查看编译错误信息,发现了下面的错误信息

C:\Program Files (x86)\Jenkins\workspace\pal_dev>C:\Users\sodaChen\AppData\Roaming\npm\egret.cmd clean 
C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86
        var isUsingDefault = requestVersion == defaultVersion.version;
                                                             ^

TypeError: Cannot read property 'version' of null
    at entry (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:86:62)
    at Object.<anonymous> (C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js:360:1)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)
    at Module.load (module.js:458:32)
    at tryModuleLoad (module.js:417:12)
    at Function.Module._load (module.js:409:3)
    at Module.runMain (module.js:575:10)
    at run (bootstrap_node.js:352:7)
    at startup (bootstrap_node.js:144:9)
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

既然有代码报错,那么就追踪相关的代码,从

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\win\selector.js

这个js文件开始追踪。发现这段代码获取egret系统路径有问题

function getAppDataPath() {
    switch (process.platform) {
        case 'win32': return process.env['APPDATA'] || path.join(process.env['USERPROFILE'], 'AppData', 'Roaming');
        case 'darwin': return path.join(os.homedir(), 'Library', 'Application Support');
        case 'linux': return process.env['XDG_CONFIG_HOME'] || path.join(os.homedir(), '.config');
        default: throw new Error('Platform not supported');
    }
}

跟我们在cmd下面输入egret build获取的引擎配置路径不一样。最终发现是引擎的位置读取错了。最终发现是引擎的位置读取错了。读成这样了:

C:\Windows\system32\config\systemprofile\AppData\Roaming\Egret\engine

实际引擎的路径是

C:\Users\sodaChen\AppData\Roaming\Egret\engine
怀疑是Jenkins里面有改变环境变量(也有可能是白鹭自己设置环境变量有问题,没去深入研究)

解决方法是在EgretLauncher的安装路径下修改这个js文件

C:\Program Files (x86)\Egret\EgretLauncher\resources\app\engine\egret.js

强制把enginePath这个变量设置为自己的引起路径

enginePath = "C:\\Users\\linlong\\AppData\\Roaming\\Egret\\engine\\"

它会读取这个配置文件config.json,然后这个配置文件有记录你的使用的引擎版本号
如果你有修改自定义引擎位置,那么记得维护这个配置文件
比方说我的最新配置:

C:\Program Files (x86)\Jenkins\workspace\egret-core

最终可以正常编译了,有个麻烦的地方就每次升级egret必须再次egret.js文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值