Невозможно профилировать приложение Node.js, перенесенное Babel, с помощью Spy-js в WebStorm - PullRequest
0 голосов
/ 11 декабря 2018

Итак, я и моя команда в настоящее время занимаемся профилированием нашего приложения Node.js, чтобы попытаться как можно лучше повысить его производительность.После того, как я сделал это с Chrome DevTools для Node.js, что было не так сложно, я подумал о том, чтобы попробовать Jetbrains Spy-js , и до сих пор мне не повезло.

Приложение запускается из контейнера Docker, и код передается с babel-cli на лету, так что это, безусловно, немного усложняет ситуацию.Несмотря на то, что я мог бы заставить его работать вне Docker и каким-то образом подключить его к другим контейнерам, я не мог пойти так далеко, чтобы попробовать это, так как мне не удалось запустить приложение с Spy-js.

Spy-js отличается от DevTools тем, что он не просто соединяется с приложением через порт отладки встроенного инспектора, но требует, чтобы приложение запускалось из инструмента, чтобы оно также могло перехватывать и изменять скриптвыполнение на лету (согласно их документам).

Поскольку я использую babel-node для запуска приложения, я попытался создать новую конфигурацию Run / Debug в WebStorm, указывающую на него (из свежегоглобальная установка babel-cli) в качестве значения «интерпретатора узла» в окне параметров.Я также уже добавил все необходимые переменные среды приложения в опции.

При вышеупомянутой установке попытка запустить новую конфигурацию Spy-js приводит к следующим ошибкам:

Undefined handler Super
session (ak133): Error while instrumenting '<app directory here>/node_modules/p-locate/index.js'
 (g is not a function)
session (ak133): Unexpected identifier
<app directory here>/node_modules/boom/lib/index.js:249
    constructor(message, options undefined {}) {
                                 ^^^^^^^^^

Похоже, у него проблемы с переносом зависимостей ( boom ).Первоначальный источник для этого был options = {}, поэтому я не уверен, почему он тоже будет преобразован в это.

Насколько я знаю, это официально еще не поддерживается, я бы очень признателен за возможностьзапустите его каким-то образом , поскольку Spy-js, кажется, делает свое дело, и это не просто еще одна оболочка для родного профилировщика v8, поэтому любая помощь будет признательна.

1 Ответ

0 голосов
/ 11 декабря 2018

Попробуйте использовать -r babel-register вместо babel-node - это улучшит ситуацию?

enter image description here

Конечно, вам нужно добавить .babelrc к вашему проекту, как

{
  "presets": ["env"]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...