2016-02-25 22 views
9

Ho impostato karma e gelsomino sul mio setup di angularjs 1.5 e jspm. Innanzitutto tutti gli errori di karma che il log di traccia proviene solo da systemjs, il che rende più difficile il debug. Ricevo anche molti messaggi di rifiuto potenzialmente non gestiti anche se tutte le mie promesse stanno gestendo i rifiuti.Registro tracce orribili Karma JSPM

ERROR LOG: 'Potentially unhandled rejection [5] 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15' 
ERROR LOG: 'Potentially unhandled rejection [6] 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22 
[email protected]://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15' 

    MyService 
     ✗ should do the thing 
    Expected 3 to equal 2. 
    [email protected]/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1252:34 
    [email protected]/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1211:18 
    [email protected]/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:999:20 
    [email protected]/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:890:17 


PhantomJS 2.1.1 (Linux 0.0.0): Executed 46 of 46 (1 FAILED) (0.205 secs/0.028 secs) 

C'è un modo per ottenere registri di traccia migliori con gli errori?

risposta

0

Stavo vedendo gli stessi errori Potentially unhandled rejection... anche. Sono semplicemente orribili e del tutto inutili. Quello che ho fatto per eseguire il debug del mio problema è stato quello di mettere i phantomjs in modalità di debug e inserire una dichiarazione debugger; appena prima della riga di codice a cui si fa riferimento nell'errore e quindi sono riuscito a passare e trovare il problema esatto che stavo avendo.

Nel tuo caso, l'errore viene generato sulla riga 1252 di jspm_packages/system-polyfills.src.js, in cui è un metodo tryCatchReject. Porrei una dichiarazione debugger; in questo modo e quindi visualizzare il valore di e.message durante il debug:

/** 
    * Return f.call(thisArg, x), or if it throws return a rejected promise for 
    * the thrown exception 
    */ 
    function tryCatchReject(f, x, thisArg, next) { 
     try { 
      next.become(getHandler(f.call(thisArg, x))); 
     } catch(e) { 
      debugger; 
      next.become(new Rejected(e)); 
     } 
    } 

Il karma-phantomjs-launcher readme dà un buon esempio di come configurare il Karma di passare le bandiere giuste per phantomjs per il debug pure come alcune buone istruzioni:

// karma.conf.js 
module.exports = function(config) { 
    config.set({ 
    browsers: ['PhantomJS', 'PhantomJS_custom'], 

    // you can define custom flags 
    customLaunchers: { 
     'PhantomJS_custom': { 
     base: 'PhantomJS', 
     options: { 
      windowName: 'my-window', 
      settings: { 
      webSecurityEnabled: false 
      }, 
     }, 
     flags: ['--load-images=true'], 
     debug: true 
     } 
    }, 

    phantomjsLauncher: { 
     // Have phantomjs exit if a ResourceError is encountered (useful if karma exits without killing phantom) 
     exitOnResourceError: true 
    } 
    }) 
} 

Se si imposta l'opzione di debug su true, sarà incaricato di lanciare aw browser eb per far apparire il debugger. Si noti che si desidera mettere il debugger ; dichiarazioni nel tuo JavaScript per colpire i breakpoint. Devi essere in grado di inserire i punti di interruzione nel codice di test e nel codice del client . Si noti che l'opzione di debug aggiunge automaticamente --remote-debugger-port = 9000 e --remote-debugger-autorun = yes passa a PhantomJS.

Quando inizi a eseguire i test dovresti visualizzare una richiesta per navigare su http://localhost:9000/webkit/inspector/inspector.html?page=2. Qui puoi abilitare il debug e scorrere il codice.