PHP rocks! wünscht allen Mitgliedern einen guten Rutsch ins neue Jahr 2017 !!!
Hinweis: Das Forum zieht um! Um keine Datenverluste zu haben, schalten wir zwecks Übernahme der Daten das Forum am Sonntag, den 24.04.2016 um ca. 21:00 Uhr offline und passen anschliessend die DNS-Einträge an.
www.php-rocks.de wird euch dann nach den Aktualisierungen der DNS-Server wieder wie gewohnt uneingeschränkt zur Verfügung stehen.
Danke für euer Verständnis!

Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Help debugging
#1
Hallo,
folgende Seite http://frdl.webfan.de/cdn/application/webfan/app.html geht nicht im FF (bwz. no-chrome).
Ich dachte es liegt irgendie an fs.readFileSync bzw. frdl.xhrSync auf eine filesystem: url.
Aber das scheint es noch nicht ganz zu sein.
Ich brauche einen Wink mit dem Zaunpfahl!

Viele Grüße
Till
Antworten
#2
Hi,

Ich kann mich auf die Schnelle sicher nicht darin reinlesen, aber vielleicht hilft Dir unten angehängter Konsolen-Eintrag weiter.

Gruß Arne


Angehängte Dateien Thumbnail(s)
   
Antworten
#3
Hi Arne,
jein, ein bischen.

Erstmal danke das Du Dir die Mühe machst mir bei meiner wenig konkreten Frage zu helfen.

Ich bin mittlerweile auf eine Reihe (wahrscheinlich) relevanter Probleme gestoßen, habe aber noch keine endgültige Lösung.

1. FF Console
Der Fehler (root of null) erscheint bei mir nicht, stattdessen: Ignoring get or set of property that has [LenientThis] because the "this" object is incorrect. https://bugzilla.mozilla.org/show_bug.cgi?id=860312 http://stackoverflow.com/questions/27159967/javascript-dom-this-object-is-incorrect
console.report printed nicht die Fehler in die Konsole wie bei den anderen Browsern.
Das muß ich irgendwie ändern...

2. Promise.then
Bin mir nicht ganz sicher, habe irgendwie das Gefühl das
Code:
var promise = frdl.sql.query(_sql, function(err, result) {
nicht then-ed und ich das callback benutzen muß?

3. fs.readFile und fs.readFileSync
Zunächst einmal readFileSync bnutzt einen XMLHttpRequest auf eine filesystem: url, das funzt nur in Chrome und nicht FF, dies ist aber bekannt und sollte eigentlich abgefangen werden.
fs.readFile schreibt den Fehler (wenn Datei nicht vorhanden e.g.) nicht in das callback sondern in die Console, bzw. fängt ihn nicht richtig ab. Das muß ich überarbeiten:
Code:
fs.readFile = function(/* file[, options], callback */){
fs.polyfill.check();    
    
    var file = arguments[0];
    var options = (3 === arguments.length) ? arguments[1] : false;
    var callback = (3 === arguments.length) ? arguments[2] : arguments[1];
    
    
var _ls = function(){
try{    
var i = localStorage.getItem(file);    
    if(null === i){
        callback(file.toString()+' does not exist in local storage');
    }else{
        callback(false,i);
    }    
  }catch(err){
        console.warn(err);
}    
};    
    
    
if(!!fs.polyfill.filer){
    try{
    frdl.fs5.polyfill.getFiler().open(file, function(file) {
                   var reader = new FileReader();
                   reader.onload = function(ev) {
                         callback(false,ev.target.result.toString());
                   };
                    reader.readAsBinaryString(file);            
     }, function(){
         callback('Cannot read '+file);
     });             
    }catch(err){
        callback(err);
    }

}else if (!!fs.polyfill.localStorage){
    _ls();
}        

          
};

Code:
            var onError=function(e)
            {
                if(e.code==FileError.NOT_FOUND_ERR)
                {
                    if(destStr)
                    {
                        if(!!console)return console.warn(e, '"'+srcStr+'" or "'+destStr+'" does not exist.');
                    /*    throw new Error('"'+srcStr+'" or "'+destStr+'" does not exist.');*/  //<-- uncaught
                    }else
                    {
                           if(!!console)return console.warn(e, '"'+srcStr+'" does not exist.');
                        /*     throw new Error('"'+srcStr+'" does not exist.');   //<-- uncaught
                               callback('"'+srcStr+'" does not exist.');
                               return;*/
                    }
                }else
                {
    if(!!console)return console.warn(e, 'Problem getting Entry for one or more paths. '+srcStr);
    /* throw new Error('Problem getting Entry for one or more paths. '+srcStr); */ //<-- uncaught
                }
            };
Mit console.warn bekomme ich natürlich den error nicht, throw wirft uncaught obwohl ich readFile gecacht hab.

Code:
     fs.readFile(gui.configfile(), function(err, data){
              if(err){
                b();
                return;
           }
          
                        $scope.manifest=JSON.parse(data);
                         $scope.config=$scope.manifest;
                        

                      
                  
                        applyManifest();
                        
                        b();    

       });
b() wird nicht aufgerufen wenn file not found.

4. module undefined (mainmodule)
should be fixed

5. Setter/Getter
Der Code schint nun hier zu stocken: http://cdn.webfan.de/cdn/application/webfan/node_modules/webfan/ql.js?minify=no
Ich vermute ein Problem mit den setter/getter und Profxy-Functions des ql Objects, aber weiter bin ich noch nicht...
Antworten
#4
Der Code funktioniert nun.
Code:
                if(true !== ql.preload && 'function' === typeof ql.preload){
                        var fN = ql.preload;                        
                        ql.preload = true;
                        try{
                            fN.call(ql);
                        }catch(err){
                            console.warn(err);
                        }
}


Code:
                    if(true !== ql.preload && 'function' === typeof ql.preload){
                        var fN = ql.preload;                        
                        try{
                            fN.call(ql);
                        }catch(err){
                            console.warn(err);
                        }
                        ql.preload = true;
                    }
Der Fehler kommt jedoch NICHT dadurch zustande das fN eine Referenz ist (oder)?!?
Antworten


Gehe zu: