Отладка источников CoffeeScript с помощью нода-инспектора

Некоторое время я использую CoffeeScript для написания программ Node.js. Это нормально для отладки node-inspector если я скомпилирую источники с Source Maps.

Однако когда я пытаюсь создать смешанное приложение Javascript/CoffeeScript, используя coffee-script/register:

#!/usr/bin/env node
require('coffee-script/register');
require('../src/client');

Затем узел-инспектор показывает скомпилированный Javascript.

Есть ли как увидеть реальный *.coffee источники в node-inspector когда я не эксплицирую это компилирую?

1 ответ

Решение

Отказ от ответственности: я сопровождающий Node Inspector

Для того, чтобы увидеть актуальный *.coffee файл в Node Inspector, вам нужно предоставить файл исходной карты, описывающий, как отобразить переносимый javascript, загруженный во время выполнения Node/V8, на ваш источник кофе-скрипта. Кроме того, имя файла переданного JavaScript должно отличаться от исходного имени сценария (AFAIK).

Это беда с require('coffee-script/register'): он преобразует источник кофе-скрипта в источник javascript, сохраняя то же имя файла. Другими словами, среда выполнения (и Node Inspector) видят, что ваш *.coffee содержит транслируемый javascript, поэтому он не может отображать ваш кофейный скрипт с тем же именем файла. Также AFAIK, компилятор кофе в этом случае не генерирует карту источника.

Я вижу два возможных подхода к решению проблемы:

  1. изменять loadFile() в coffee-script/register:

    • создать исходную карту и сохранить ее в файл
    • передать другое имя файла module._compileнапример, script.coffee.js
  2. изменять coffee-script/register испускать встроенную исходную карту. Исправьте Chrome DevTools и / или Node Inspector для поддержки встроенных исходных карт.

Рекомендации:

Другие вопросы по тегам