调试时,Node Server调试器代码行为会发生变化

时间:2015-10-14 17:32:05

标签: node.js debugging typescript webstorm

我正在调试用WebStorm 10.0.4中的typescript编写的节点服务器,当单步执行代码时,代码执行路径完全改变。变量赋值似乎会破坏并引用不同的(不正确的)对象并破坏我的代码。

我有一个类POST,它包含处理app.post('/Contacts', jsonParser, CustomerRoutes.postContact); 个请求的不同方法。我注册了端点:

CustomerRoutes.postContact

public staticpublic static postContact(request, response) { if(request.body.$type == 'Person') { CustomerRoutes.postIndividual(request, response); } else if(request.body.$type == 'Organization') { CustomerRoutes.postOrganization(request, response); } } 函数,定义为:

CustomerRoutes.postIndividual

CustomerRoutes.postOrganizationpublic static也是CustomerRoutes个函数。因此,当服务器处于非调试模式时,代码按预期执行,并执行分支语句。但是,当单步执行代码时,变量request全局变量将被重新分配到CustomerRoutes.postContact

范围内的CustomerRoutes内容

enter image description here

正如您在调试器的“变量”窗口中看到的,变量request已重新定义两次,值为responsepostIndividual。所以现在当单步执行代码并调用函数postOrganizationCustomerRoutes时,POST不包含这些函数,{{1}}失败,异常和错误500.

我不相信这是任何种类/时间条件,因此它必须是调试器环境中的错误。我的预感是,typescript变量映射与调试器无法正常工作,但我不确定。有没有人看到这样的问题或修复的想法?我从来没有见过这样的东西。我很乐意按要求发布更多信息。

1 个答案:

答案 0 :(得分:0)

  

我的预感是,typescript变量映射与调试器无法正常工作,但我不确定。

TypeScript目前在源地图中没有正确的变量映射。请关注此问题:https://github.com/Microsoft/TypeScript/issues/2859(此处也回答过:Chrome Typescript debugging references wrong 'this'

  

有没有人看过像这样的问题或修复过的想法?

禁用源映射以查看原始JavaScript中实际发生的情况。