karma-runner - 如何使用 karma-babel-preprocessor 和 PhantomJs 保留行正确的行号?

标签 karma-runner

当我使用documented configuration时像这样的 karma-babel-preprocessor

module.exports = function (config) {
  config.set({
    preprocessors: {
      'src/**/*.js': ['babel'],
      'test/**/*.js': ['babel']
    },
    babelPreprocessor: {
      options: {
        sourceMap: 'inline'
      },
      filename: function (file) {
        return file.originalPath.replace(/\.js$/, '.es5.js');
      },
      sourceFileName: function (file) {
        return file.originalPath;
      }
    }
  });
};

我得到了错误的源行号,例如

 at /var/www/edu-web/tests/jasmine/services/image/imageServiceTest.es5.js:77

默认情况下不支持源映射,所以这并不奇怪。然而,这里的问题是 imageServiceTest.es5.js 文件在 karma 完成后被删除,所以我别无选择,只能猜测单元测试失败的地方(在哪一行),而且速度很慢。

issue中有解决方案适用于 Chrome(不是 PhantomJs)。我也可以修复 PhantomJs 的配置吗?

最佳答案

我在查看 Babel 文档时找到了解决方案:

retainLines Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps.

NOTE: This will obviously not retain the columns.

( http://babeljs.io/docs/usage/options/ )

我的最终配置:

module.exports = function (config) {
  config.set({
    preprocessors: {
      'src/**/*.js': ['babel'],
      'test/**/*.js': ['babel']
    },
    babelPreprocessor: {
      options: {
        sourceMap: 'inline',
        retainLines: true // NEW LINE
      },
      filename: function (file) {
        return file.originalPath.replace(/\.js$/, '.es5.js');
      },
      sourceFileName: function (file) {
        return file.originalPath;
      }
    }
  });
};

关于karma-runner - 如何使用 karma-babel-preprocessor 和 PhantomJs 保留行正确的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386136/

相关文章:

angular - Angular 分量的绝对或相对 "templateUrls"

javascript - Reflect.getOwnMetadata 不是带有 karma-typescript 的函数

javascript - 警告 [网络服务器] : 404:/base/public/js/dest/dest. js

unit-testing - 我可以从 Karma 结果中隐藏/删除 UI 吗?

javascript - 将 angular js 服务/工厂注入(inject) Jasmine

testing - 在另一台计算机上对 AngularJS 应用进行 E2E 测试

unit-testing - 如何在 angularjs 中使用自定义 dom 事件进行测试

javascript - 在 Jasmine JS 测试中未触发 AngularJS Promise 回调

asp.net-mvc - 使用 Jasmine 和 Karma 在 ASP.NET MVC 中对 JavaScript 进行单元测试

javascript - 使用 AngularJS、Karma 和 Jasmine 在 JavaScript 中记录/转储数据?