2

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

但是,当我尝试使用以下方法创建混合 Javascript/CoffeeScript 应用程序时coffee-script/register

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

然后,节点检查器显示已编译的 Javascript。

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

4

1 回答 1

3

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

为了*.coffee在 Node Inspector 中查看实际文件,您需要提供一个源映射文件,该文件描述如何将在 Node/V8 运行时中加载的转译 javascript 映射到您的咖啡脚本源。此外,转译后的 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 以支持嵌入式源映射。

参考:

于 2014-11-13T19:24:53.697 回答