【问题标题】:Karma JSPM Horrible Trace LogKarma JSPM 可怕的跟踪日志
【发布时间】:2016-06-07 13:13:53
【问题描述】:

我一直在我的 angularjs 1.5 和 jspm 设置上设置 karma 和 jasmine。首先,来自 karma 的所有错误跟踪日志都来自 systemjs,这使得调试变得更加困难。即使我的所有承诺都在处理拒绝,我也会收到很多可能未处理的拒绝消息。

ERROR LOG: 'Potentially unhandled rejection [5] 
tryCatchReject@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34
runContinuation1@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18
when@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20
run@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28
_drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22
drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15'
ERROR LOG: 'Potentially unhandled rejection [6] 
tryCatchReject@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34
runContinuation1@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18
when@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20
run@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28
_drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22
drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15'

  MyService
      ✗ should do the thing
    Expected 3 to equal 2.
    tryCatchReject@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1252:34
    runContinuation1@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1211:18
    when@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:999:20
    run@/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)

我有办法获得更好的错误跟踪日志吗?

【问题讨论】:

    标签: angularjs karma-jasmine es6-promise systemjs jspm


    【解决方案1】:

    我也看到了同样的Potentially unhandled rejection... 错误。他们只是很糟糕而且完全没有帮助。我为调试我的问题所做的是将 phantomjs 置于调试模式,并在错误中引用的代码行之前放置一个 debugger; 语句,然后我能够逐步找到我遇到的确切问题。

    在您的情况下,错误在 jspm_packages/system-polyfills.src.js 的第 1252 行引发,这是一个方法 tryCatchReject。我会像这样放置一个debugger; 语句,然后在调试时查看e.message 的值:

        /**
         * 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 提供了一个很好的示例,说明了如何配置 Karma 以将正确的标志传递给 phantomjs 以进行调试以及一些很好的说明:

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

    如果您将调试选项设置为 true,系统将指示您启动 用于调出调试器的 Web 浏览器。请注意,您将要放置 调试器; JavaScript 中的语句来命中断点。你应该 能够在您的测试代码和客户端中放置断点 代码。请注意,调试选项会自动添加 --remote-debugger-port=9000 和 --remote-debugger-autorun=yes 切换到 PhantomJS。

    当您开始运行测试时,您应该会看到导航到 http://localhost:9000/webkit/inspector/inspector.html?page=2 的提示。在那里您可以启用调试并逐步执行代码。

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 2017-06-27
      • 2019-09-08
      • 1970-01-01
      • 2017-06-19
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多