2016-02-25 28 views
9

Przygotowywałem karmę i jaśmin na moim ustawieniu angularjs 1.5 i jspm. Po pierwsze, wszystkie błędy z dziennika śledzenia karmy pochodzą właśnie z systemu systemjs, co utrudnia debugowanie. Dostaję także wiele Potencjalnie nieobsłużonych wiadomości odrzucenia, mimo że wszystkie moje obietnice traktują odrzucenia.Karma JSPM Horrible Trace Log

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) 

Czy istnieje sposób na lepsze dzienniki śledzenia z błędami?

Odpowiedz

0

Wystąpiły również te same błędy Potentially unhandled rejection.... Są po prostu okropne i kompletnie nieprzydatne. To, co zrobiłem, aby zdebugować mój problem, polegało na umieszczeniu phantomjs w trybie debugowania i umieszczeniu oświadczenia debugger; tuż przed linią kodu, do którego odnosi się błąd, a następnie mogłem przejść i znaleźć dokładny problem, który miałem.

W twoim przypadku błąd jest zgłaszany na linii 1252 z jspm_packages/system-polyfills.src.js, przy której jest metoda tryCatchReject. Chciałbym umieścić debugger; oświadczenie jak tak, a następnie wyświetlić wartość e.message podczas debugowania:

/** 
    * 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)); 
     } 
    } 

karma-phantomjs-launcher readme daje dobry przykład jak skonfigurować Karma przekazać odpowiednie flagi phantomjs do debugowania oraz jak kilka dobrych wskazówek:

// 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 
    } 
    }) 
} 

Jeśli ustawisz opcję debugowania true, zostanie poinstruowany, aby uruchomić AW eb przeglądarki, aby wywołać debugger. Zauważ, że będziesz chciał umieścić debugger ; oświadczenia w twoim JavaScript, aby trafić w punkty przerwania. Powinieneś być w stanie umieścić punkty przerwania zarówno w kodzie testowym, jak i kliencie . Zauważ, że opcja debugowania automatycznie dodaje --remote-debugger-port = 9000 i --remote-debugger-autorun = yes przełącza się na PhantomJS.

Po uruchomieniu testów powinien pojawić się monit o przejście do http://localhost:9000/webkit/inspector/inspector.html?page=2. Tam możesz włączyć debugowanie i przejść przez kod.