2017-11-28 7 views
0

私はwebpackを使用してプロジェクトをコンパイルしてから、約束がある場合はが_this2にコンパイルされることがわかりました。なぜchrome-dev-toolsは約束事で 'これ'を正しく反映できないのですか?

そして、私が約束の中でブレークポイントをとると、thisは常にchrome-dev-toolsのundefinedになります。

バグですか? Chromium開発チームがこれを解決するのは難しいですか?

さて、ソースコード:

enter image description here

webpackによってコンパイルされたコード:

enter image description here

ソースマップがあるので、クロムは私のソースコードを表示します約束外のthisが正しく検査されます。

enter image description here

しかし、約束の内部thisになりますes5にコードをコンパイルするときに、結果のコードは宣言からこれをキャプチャする_thisトリックを使用して指摘するようにundefined

enter image description here

答えて

2

コンテキスト。問題は、ソースマップは基本的に単なるテキストマップであり、コンパイルされたコードをソースコードにマッピングすることです。これは、カーソル下にあるthisがソースコード内で異なる意味を持つと推測する方法がChrome(または他の現在のデバッガ)にはないことを意味します。

この問題を回避するには、_this(またはあなたの場合はthis_2)の時計を追加することです。この時計は、これを表示します。

+0

https://bugs.chromium.org/p/chromium/issues/detail?id=327092 – zzzgoo

関連する問題