我正在使用Visual Studio Professional 2013 Update 3,并使用“hello world”日志指令创建了一个节点控制台应用程序。如果我在此指令中设置断点然后运行调试器,则它可以正常工作。它命中断点,然后我可以按预期调试(只是为了明确我的.map文件已创建并正常工作)。
现在,我清理项目(删除app.js和app.js.map生成的文件)。我编辑.njsproj文件,然后添加:
<TypeScriptOutDir>lib</TypeScriptOutDir>
我再次打开项目,通过添加额外的“\ lib”文件夹来更新启动文件路径,然后我开始调试。它运行代码,但它没有达到断点。
为什么不打破断点? Visual Studio命中检测如何适用于typescript(node.js)项目,因为在编译时没有创建.pdb文件?我如何解决这个问题,以便我可以调试一个与我的源文件不在同一文件夹中的编译代码?
任何建议,想法,反馈都将非常感激。谢谢。
注意:
检查在“\ lib”中生成的.js.map文件我可以看到.ts文件引用如何有一个额外的“.. \”所以引用是正常的。无论如何,似乎问题是检测.js文件中的命中而不是将.js映射到.ts行。
更新
重现的步骤:
<TypeScriptOutDir>lib</TypeScriptOutDir>
结果:app.js在“\ lib”文件夹中生成,VS用节点运行文件,打印“Hello world”并完成。没有断点。
是否有可能在.ts文件上设置断点总是假设生成的.js文件与.ts文件位于同一文件夹中?
我已经测试过设置和“lib”而没有成功地在.ts文件中使用breackpoint并被击中。
注意:
如果我将断点直接设置在“\ lib \ app.js”中生成的文件上,它会被点击并且Visual Studio会开始调试,但我仍然需要它在.ts文件中设置断点。
UPDATE2
使用调试工作项目(.njsproj中没有TypeScriptOutDir行)我手动更改了.js.map文件,其中包含:
"sources":["app.ts"] to "sources":["app.ts"]
我已将其更改为app2.ts:
"sources":["app.ts"] to "sources":["app2.ts"]
app2.ts是一个非现有文件。当我们现在运行项目时,断点不会被击中。 我也尝试过绝对路径:
"sources":["W:/VS2013/projects/NodejsConsoleAppHit/app.ts"]
并且它也可以工作,但如果指向一个非现有文件它也不起作用:
"sources":["W:/VS2013/projects/NodejsConsoleAppHit/app2.ts"]
看起来app.js.map文件负责将我们在.ts文件中设置的断点映射到.js文件中的行。
那么,lib文件夹中生成的app.js.map文件有什么问题? 如果我们看一下这个文件,我们可以在上一个文件夹中看到对.ts文件的引用:
sources":["../app.ts"]
这应该没问题,因为从“/lib/app.js”到“app.ts”的路径是“../app.ts”。但是,当我们运行项目时,结果是断点没有被击中。
为什么呢?我不知道,这是我需要弄清楚的。
我还尝试手动修改相对和绝对之间的引用而没有任何成功......
我创建了两个“Node.js控制台应用程序”项目,并在“hello world”日志指令中设置了一个断点。
NodejsConsoleAppHit是没有TypeScriptOutDir配置的那个。是在项目根文件夹中生成文件并命中断点的那个。
https://www.dropbox.com/s/mniuhm8mgnly3ff/NodejsConsoleAppHit.zip?dl=0
NodejsConsoleAppNoHit是具有TypeScriptOutDir配置的那个。是在lib文件夹中生成文件并且没有命中断点的那个。
https://www.dropbox.com/s/dyadwxupltcg6gc/NodejsConsoleAppNoHit.zip?dl=0
答案 0 :(得分:0)
根据CodePlex中Visual Studio的Node.js工具上的这个工作项: https://nodejstools.codeplex.com/workitem/1428
该问题已被考虑并修复。我已经用&#34; NTVS 1.0 RC VS 2013&#34;进行了测试。似乎工作正常。
你可以选择&#34; NTVS 1.0 RC VS 2013&#34;来自NTVS下载页面: https://nodejstools.codeplex.com/releases/view/149714
或直接到这里: https://nodejstools.codeplex.com/downloads/get/946895
我必须说我们在此期间一直使用node-inspector(https://github.com/node-inspector/node-inspector)进行调试,它是一个非常好的工具,解决了我们所有的问题。
个人仍然发现VS集成对我们自己来说更方便。这是一个品味问题,因为在更新了node.js工具之后,两者似乎都能正常工作。