2017-12-21 8 views
1

私はchrome-remote-interfaceノードパッケージを使用してAngularアプリケーションにリモートアクセスしています。約束を返す式をevalateする 、私はこのコードスニペットを使用します。chrome-remote-interfaceを使用してAngularアプリケーションの約束をどのように評価するか

Runtime.evaluate({expression, awaitPromise: true, returnByValue: true}); 

私はfollwingエラーメッセージが出ます:

Error: Result of the evaluation is not a promise 

私は承知している、zone.jsは猿のパッチであることをPromise with ZoneAwarePromise。 それが原因か、何か間違っているのでしょうか?ネイティブプロミスを使用する方法はありますか?

+0

私は '' 'NativePromise.resolve(私のZoneAwarePromise)' ''(zone.jsソース内のウィンドウオブジェクトに保存)で試してみました。その後、それは働いた!奇妙なことは、リモートデバッグを使用してChromeインスタンスを使用すると、ローカルマシンで完璧に動作することです。リモートマシンでは、Chrome 60が使用されています。これは古いChromeバージョンの問題でしたか? –

+0

'' 'window .__ zone_symbol__Promise'''を介してオリジナルの本来の約束を得ることができることを知りました。だから私は今回避策があります。しかし、問題はまだあります:それは私のローカルのChromeではうまくいくが、リモートのChrome 60ではうまくいかないのはなぜですか? –

答えて

0

問題は、chrome-remote-interfaceがzone.jsを使用しているときにネイティブプロミスを置き換えるZoneAwarePromiseを評価できないということでした。 zone.jsは、オリジナルのPromise in window .__ zone_symbol__Promiseを保存します。

Runtime.evaluate({window.__zone_symbol__Promise.resolve(expression), awaitPromise: true, returnByValue: true});を使用してください。ただし、zone.jsの実装の詳細によっては、実際には回避策に過ぎず、プロダクションコードでは使用しないでください。

関連する問題