Webpack 为什么chrome开发工具可以';t反映';这';在承诺中正确吗?

Webpack 为什么chrome开发工具可以';t反映';这';在承诺中正确吗?,webpack,google-chrome-devtools,es6-promise,source-maps,Webpack,Google Chrome Devtools,Es6 Promise,Source Maps,我使用webpack来编译我的项目,然后我发现如果有承诺,这个将被编译成\u this2 问题是,当我在promise中设置断点时,这个在chrome开发工具中总是未定义的 是虫子吗?铬开发团队很难解决这个问题吗 现在,源代码: 由网页编译的代码: 因为有一个源代码映射,chrome将为我显示源代码,并且将正确检查承诺之外的 但是,承诺中的此将是未定义的 正如您在将代码编译到es5时所指出的,生成的代码使用\u this技巧从声明上下文中捕获这一点。问题在于,源映射本质上只是文本映射,将一

我使用
webpack
来编译我的项目,然后我发现
如果有承诺,这个
将被编译成
\u this2

问题是,当我在promise中设置断点时,
这个
在chrome开发工具中总是
未定义的

是虫子吗?铬开发团队很难解决这个问题吗

现在,源代码:

网页
编译的代码:

因为有一个源代码映射,chrome将为我显示源代码,并且
将正确检查承诺之外的

但是,
承诺中的此
将是
未定义的


正如您在将代码编译到
es5
时所指出的,生成的代码使用
\u this
技巧从声明上下文中捕获这一点。问题在于,源映射本质上只是文本映射,将一段编译后的代码映射回源代码。这意味着Chrome(或任何其他当前调试器)将无法猜测光标下的
这个
在源代码中具有不同的含义


解决这个问题的一个简单方法是为
\u this
(或者在您的例子中为
this\u 2
)添加一个手表,它将显示捕获到的范围。

开发工具似乎需要某种选项来折叠捕获的范围,特别是当
this
未定义时