我正在调试用WebStorm 10.0.4中的typescript编写的节点服务器,当单步执行代码时,代码执行路径完全改变。变量赋值似乎会破坏并引用不同的(不正确的)对象并破坏我的代码。
我有一个类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.postIndividual
CustomerRoutes.postOrganization
和public static
也是CustomerRoutes
个函数。因此,当服务器处于非调试模式时,代码按预期执行,并执行分支语句。但是,当单步执行代码时,变量request
全局变量将被重新分配到CustomerRoutes.postContact
CustomerRoutes
内容
正如您在调试器的“变量”窗口中看到的,变量request
已重新定义两次,值为response
和postIndividual
。所以现在当单步执行代码并调用函数postOrganization
和CustomerRoutes
时,POST
不包含这些函数,{{1}}失败,异常和错误500.
我不相信这是任何种类/时间条件,因此它必须是调试器环境中的错误。我的预感是,typescript变量映射与调试器无法正常工作,但我不确定。有没有人看到这样的问题或修复的想法?我从来没有见过这样的东西。我很乐意按要求发布更多信息。
答案 0 :(得分:0)
我的预感是,typescript变量映射与调试器无法正常工作,但我不确定。
TypeScript目前在源地图中没有正确的变量映射。请关注此问题:https://github.com/Microsoft/TypeScript/issues/2859(此处也回答过:Chrome Typescript debugging references wrong 'this')
有没有人看过像这样的问题或修复过的想法?
禁用源映射以查看原始JavaScript中实际发生的情况。