Карты источников CoffeeScript загружены, но источники не получены Chrome

Я пытаюсь заставить исходные карты работать для моего CoffeeScript в Chrome. Я вижу, что coffee правильно генерирует исходные карты, и на самом деле инструменты разработчика Chrome показывают, что файл исходной карты успешно получен с моего локального HTTP-сервера.

Однако сам файл .coffee не извлекается, хотя я могу GET вручную выполнить его в браузере.

Я подозреваю, что это может иметь какое-то отношение к структуре каталогов. Каталог, из которого я обслуживаю HTTP (используя простой сервер Python), выглядит так:

./
  index.html ("includes" 'lib/coffeedrag.js)
  src/
    coffeedrag.coffee
  lib/
    coffeedrag.js
    coffeedrag.map

Итак, когда я открываю index.html в браузере, файлы .js и .map загружаются правильно. Файл .map выглядит так:

{
  "version": 3,
  "file": "coffeedrag.js",
  "sourceRoot": "..",
  "sources": [
    "src/coffeedrag.coffee"
  ],
  "names": [],
  "mappings": "[ trimmed for brevity ... ]"
}

Что может помешать Chrome получить coffeedrag.coffee?


person Assaf Lavie    schedule 04.11.2013    source источник


Ответы (1)


Chrome загружает файл исходных карт для JS-файла из небольшого комментария в файле, например:

/*
//@ sourceMappingURL=app.js.map
*/

Обычно это удаляется из компилятора CoffeeScript, если вы не укажете флаг --bare: http://coffeescript.org/#usage< /а>

Например, в моем Gruntfile.coffee у меня есть:

module.exports = (grunt) ->
  grunt.initConfig
    coffee:
      dev:
        expand: true
        cwd: 'assets/js/'
        dest: '<%= coffee.dev.cwd %>'
        ext: '.js'
        src: [
          '*.coffee'
          '**/*.coffee'
        ]
        options:
          bare: true
          sourceMap: true

Затем это открывает файлы CoffeeScript для Chrome:

скриншот Chrome

И если я добавлю debugger в свой код, я получу:

введите здесь описание изображения

person Ahmed Nuaman    schedule 04.11.2013
comment
Как я уже упоминал, файл карты действительно загружается Chrome, и, естественно, комментарий исходной карты генерируется, как и ожидалось. Но все же Chrome не загружает файлы кофе. - person Assaf Lavie; 04.11.2013
comment
О, понятно, но зачем Chrome загружать файлы кофе? Chrome не может изначально выполнять CoffeeScript, и, поскольку ваше приложение не связывается с файлами каким-либо образом, кроме как в комментарии к исходным картам, оно не будет отображаться на вкладке «Сеть». - person Ahmed Nuaman; 04.11.2013
comment
Справедливо. Я предположил, что он будет использовать http для загрузки файла кофе так же, как он загружает файл карты, поэтому, если один из них появится на вкладке сети, то должен появиться и другой. Теперь я вижу, что когда я добавляю точку останова в JS, она действительно врывается в файлы кофе. Спасибо. - person Assaf Lavie; 04.11.2013
comment
Просто из любопытства: почему вы хотите загрузить файл CoffeeScript? - person Ahmed Nuaman; 04.11.2013
comment
Я хочу иметь возможность просматривать исходный код страницы и видеть кофе. Это все. - person Assaf Lavie; 04.11.2013
comment
Так что вы можете сделать это на вкладке Источники. На этом первом снимке экрана, который я разместил, вы можете увидеть, где Chrome нашел файлы CoffeeScript, которые относятся к моим файлам JS. - person Ahmed Nuaman; 04.11.2013
comment
Я использовал исходные карты, и у меня была точно такая же проблема в Chrome. Хитрость заключается в том, чтобы перейти на вкладку «Источники» и нажать крошечную кнопку в верхнем левом углу с всплывающей подсказкой «Показать навигатор» и щелкнуть там файл *.coffee. Да, вот ваш аккуратный исходный код. Вы также можете просматривать скомпилированные js-файлы. - person amoebe; 18.04.2014