сервер webstorm 7/karma ищет неправильный файл исходной карты при отладке coffeescript

У меня есть дьявольское время, пытаясь заставить отладчик работать с моими файлами coffeescript при тестировании с помощью бегуна теста кармы.

Предположительно, все, что мне нужно сделать, это сказать наблюдателю за файлами Webstorm сгенерировать исходные карты, и отладчик будет работать с исполнителем тестов кармы. К сожалению, отладчик, похоже, не распознает вывод файла карты компилятором 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.карта"

Первая версия создает пустой файл 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.карта". Это выводит пустой файл file.js.map и никакой фактической карты.

Между тем, когда я запускаю тест в режиме отладки, сервер Karma сообщает:

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 выводит file.map без «js». Кажется, я не могу изменить то, как называется выходной файл исходной карты, и я не вижу, где указать отладчику, что искать.

В скобках отладчик также сообщает мне, что он не может найти файлы карт для библиотек, отличных от кофескриптов, загруженных моими файлами, такими как angular.js и jquery.js. Возможно, это ключ к тому, что не так.

Я отправил заявку в JetBrains и поделюсь здесь их ответом. Тем не менее, если кто-то знает решение, пожалуйста, дайте мне знать.

Спасибо!


person MyTimeFinder    schedule 05.10.2013    source источник


Ответы (1)


Единственный способ заставить отладчик использовать файлы .js и .map, сгенерированные средством наблюдения за файлами, — это загрузить эти сгенерированные файлы .js в файл конфигурации вашей кармы вместо файлов .coffee. Когда вместо этого вы загружаете файлы .coffee, карма на самом деле обслуживает не файлы, созданные транспилером, а файлы .js, созданные препроцессором кофе, и эти файлы не имеют сгенерированных исходных карт, поэтому отладчик понятия не имеет, как их сопоставить. ваши кофейные файлы. Здесь у вас есть 2 варианта:

  • загрузите файлы .js, сгенерированные наблюдателем файлов, вместо исходных файлов .coffee в вашей конфигурации кармы, например:

(фрагмент)

files: [
'../app/scripts/**/*.js'
'spec/*.js'
]
  • настройте coffeePreprocessor в karma для использования исходных карт, например:

(фрагмент)

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' );
            }
        },
...

Чтобы иметь возможность использовать второй вариант, вам необходимо убедиться, что вы используете самые последние версии karma и karma-coffee-preprocessor.

person lena    schedule 07.10.2013
comment
Любые подсказки о том, как обрабатывать файлы, добавленные с помощью requirejs с опцией 2? (поскольку он пытается добавить .js в файлы) - person g10; 07.11.2013