【问题标题】:Node Server debugger code behavior changes when debugging调试时节点服务器调试器代码行为发生变化
【发布时间】:2015-10-15 06:30:42
【问题描述】:

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

我有一个类CustomerRoutes.ts,其中包含处理POST 请求的不同方法。我注册了端点:

app.post('/Contacts', jsonParser, CustomerRoutes.postContact);

CustomerRoutes.postContact 是一个public static 函数,定义为:

public static postContact(request, response) {
    if(request.body.$type == 'Person') {
        CustomerRoutes.postIndividual(request, response);
    } else if(request.body.$type == 'Organization') {
        CustomerRoutes.postOrganization(request, response);
    }
}

CustomerRoutes.postIndividualCustomerRoutes.postOrganization 也是 public static 函数。因此,当服务器处于非调试模式时,代码按预期执行并执行分支语句。但是,当单步执行代码时,变量 CustomerRoutes 全局变量会在 CustomerRoutes.postContact 的范围内重新分配给 request 的内容

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

我不认为这是任何形式的比赛/计时条件,因此它一定是调试器环境中的错误。我的预感是打字稿变量映射无法与调试器一起正常工作,但我不确定。有没有人看到这样的问题或修复的想法?我从来没有见过这样的事情。我很高兴按要求发布更多信息。

【问题讨论】:

    标签: node.js debugging typescript webstorm


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-11
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 2019-03-15
      • 2016-04-11
      • 2020-06-21
      • 2011-05-11
      • 2019-09-17
      相关资源
      最近更新 更多