Итак, я и моя команда в настоящее время занимаемся профилированием нашего приложения 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, поэтому любая помощь будет признательна.