If you understand objects, then you understand properties of objects. Exists is a property of the object Aliases.panelErrorpanel. In order to check the Exists property, it first needs to detect if the object exists. Well, if the object does not exist, it can't check the Exists property so, most likely, you'll get an error in your log saying something like "Aliases.panelErrorpanel does not exist"... which you're like... "Well, DUH!!!"
So... to check existance of an object as you want to, rather than just checking the Exists property, you need to first Wait to see if the object comes around. If it does , THEN you can start looking at properties.
So... Just some light reading...https://support.smartbear.com/testcomplete/docs/app-objects/common-tasks/checking-existence.html
From that, I'd change your code to the following (see below). Note the use of WaitAliasChild. I have the timer set to 20 seconds on that method. That means, it will wait up to 20 seconds for the object to return. If it does, the object itself is returned and "Exists" is true. If it doesn't, then a "stub" object with no properties but the "Exists" property is returned and that has a value of "false".
function callTimerRoutines(){
var MyTimer = Utils.Timers.Add(10000, "Startup.timeRoutine", true);
}
//StartUp unit
function timeRoutine(){
if(!Aliases.WaitAliasChild('panelErrorpanel', 20000).Exists){
Log.Message("Move");
}else{
Log.Error(Aliases.panelErrorpanel.panelErrorContent.panelErrorContainer.textContent);
Log.Picture(Sys.Desktop, "Modal Dialog", )
Aliases.panelErrorpanel.panelErrorContent.panelErrorContainer.buttonOk.ClickButton();
}
}