当我使用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/