在使用karma测试运行器进行测试时,我正试图让调试器使用我的coffeescript文件。
据说,我需要做的就是告诉Webstorm文件观察器生成源图,调试器将与karma测试运行器一起使用。不幸的是,调试器似乎无法识别coffeescript编译器输出的映射文件。它寻找file.coffee - > file.js.map。然而,尽管试图得到一些其他结果,地图文件总是file.coffee - > file.map
我的业力配置文件有以下内容(显然不是全部,只是相关部分):
module.exports = (config) ->
config.set
files: [
'../app/scripts/**/*.coffee'
'spec/*.coffee']
preprocessors: {
'../**/*.coffee': 'coffee'
}
我已尝试使用文件观察器进行各种配置:
带有参数的单个文件观察器:“ - compile --bare --map $ FileName $”,输出路径刷新为:“$ FileNameWithoutExtension $ .js.map”或“$ FileNameWithoutExtension $ .js :$ $ FileNameWithoutExtension .js.map“
第一个版本生成一个空白的file.js.map,第二个版本生成一个空白的file.js.map和标准的file.map,这是一个很好的源图文件。
我已经尝试了一个文件观察器只有“--compile --bare”输出路径:“$ FileNameWithoutExtension $ .js”和第二个只有“--map”输出路径:“$ FileNameWithoutExtension $。 js.map”。这会输出一个空白的file.js.map而没有实际的地图。
我尝试过一个只有“--compile --bare”的文件观察器输出路径:“$ FileNameWithoutExtension $ .js”和第二个只有“--compile --map”输出路径:“$ FileNameWithoutExtension $ .js.map”。这会输出一个空白的file.js.map而没有实际的地图。
同时,当我在调试模式下运行测试时,Karma Server会报告:
WARN [web-server]: 404: /base/spec/schedule-spec.js.map?time=1380945586331
WARN [web-server]: 404: /absolute/Users/Randolph/Documents/Sites/MTF-Minimal/app/scripts/app.js.map?time=1380945586083
etc...
显然,服务器假设地图将被称为file.js.map,而实际上coffeescript输出的文件没有“js”。我似乎无法更改输出源图文件的调用内容,我也看不到告诉调试器要查找的内容。
顺便说一句,调试器也告诉我它找不到加载我的文件的非coffeescript库的地图文件,如angular.js和jquery.js。也许这是一个错误的线索。
我已经向JetBrains提交了一张票,并将在这里分享他们的回复。但是,如果有人知道解决方案,请告诉我。
谢谢!
答案 0 :(得分:2)
使调试器使用文件观察器生成的.js和.map文件的唯一方法是在karma配置文件中加载这些生成的.js文件,而不是.coffee文件。当您加载.coffee文件时,karma实际上并不是由transpiler生成的文件,而是由咖啡预处理器生成的.js文件,并且这些文件没有生成源映射,因此调试器不知道如何将它们映射到你的咖啡文件。这里有2个选项:
(片断)
files: [
'../app/scripts/**/*.js'
'spec/*.js'
]
(摘录)
files: [
'../app/scripts/**/*.coffee'
'spec/*.cofee'
],
preprocessors: {
'**/*.coffee': ['coffee']
},
coffeePreprocessor: {
options: {
bare: true,
sourceMap: true
},
// transforming the filenames
transformPath: function ( path ) {
return path.replace( /\.js$/, '.coffee' );
}
},
...
为了能够使用第二个选项,您需要确保使用最新版本的业力和业力咖啡预处理器