使用node-inspector调试CoffeeScript源

时间:2014-11-11 11:42:55

标签: node.js coffeescript node-inspector

我正在使用CoffeeScript编写Node.js程序一段时间。如果我使用 Source Maps 编译源代码,可以使用node-inspector进行调试。

但是,当我尝试使用coffee-script/register创建混合的Javascript / CoffeeScript应用时:

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

然后,node-inspector显示已编译的Javascript。

当我没有明确地编译它时,是否有如何查看*.coffee中的实际node-inspector来源?

1 个答案:

答案 0 :(得分:3)

免责声明:我是Node Inspector的维护者

为了在Node Inspector中查看实际的*.coffee文件,您需要提供一个源映射文件,描述如何将在Node / V8运行时内加载的已转换的javascript映射到coffee-script源。此外,已转换的javascript的文件名必须与原始脚本名称(AFAIK)不同。

这是require('coffee-script/register')的问题:它将咖啡脚本源转换为javascript源,同时保留相同的文件名。换句话说,运行时(和节点检查器)看到您的*.coffee包含已转换的javascript,因此它无法显示相同文件名的咖啡脚本。同样是AFAIK,咖啡编译器在这种情况下不会发出任何源地图。

我看到两种可能的方法来解决问题:

  1. 修改loadFile()中的coffee-script/register

    • 发出源地图并将其保存到文件
    • 将不同的文件名传递给module._compile,例如script.coffee.js
  2. 修改coffee-script/register以发出嵌入的源地图。修复Chrome DevTools和/或Node Inspector以支持嵌入式源地图。

  3. 参考文献: