Как оценить обещание приложения Angular удаленно через chrome-remote-interface

Я использую пакет узла chrome-remote-interface для удаленного доступа к приложению Angular. Чтобы оценить выражение, которое возвращает Promise, я использую этот фрагмент кода:

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

Я получаю следующее сообщение об ошибке:

Error: Result of the evaluation is not a promise

Мне известно, что zone.js исправляет Обещание с помощью ZoneAwarePromise. Может ли это быть причиной, или я делаю что-то не так? Есть ли способ использовать родной Promise?

1 ответ

Решение

Проблема состояла в том, что chrome-remote-interface не мог оценить ZoneAwarePromise, который заменяет родной Promise при использовании zone.js. zone.js хранит исходное обещание Promise в окне.__ zone_symbol__Promise.

С помощью Runtime.evaluate({window.__zone_symbol__Promise.resolve(expression), awaitPromise: true, returnByValue: true}); исправил это для меня. Это действительно просто обходной путь, который зависит от деталей реализации zone.js и поэтому не должен использоваться в производственном коде.

Другие вопросы по тегам