我正在使用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
来源?
答案 0 :(得分:3)
免责声明:我是Node Inspector的维护者
为了在Node Inspector中查看实际的*.coffee
文件,您需要提供一个源映射文件,描述如何将在Node / V8运行时内加载的已转换的javascript映射到coffee-script源。此外,已转换的javascript的文件名必须与原始脚本名称(AFAIK)不同。
这是require('coffee-script/register')
的问题:它将咖啡脚本源转换为javascript源,同时保留相同的文件名。换句话说,运行时(和节点检查器)看到您的*.coffee
包含已转换的javascript,因此它无法显示相同文件名的咖啡脚本。同样是AFAIK,咖啡编译器在这种情况下不会发出任何源地图。
我看到两种可能的方法来解决问题:
修改loadFile()
中的coffee-script/register
:
module._compile
,例如script.coffee.js
修改coffee-script/register
以发出嵌入的源地图。修复Chrome DevTools和/或Node Inspector以支持嵌入式源地图。
参考文献:
loadFile()
coffee --nodejs --debug app.coffee
现在不起作用:https://github.com/node-inspector/node-inspector/issues/224