因此,我和我的团队目前正在对Node.js应用程序进行性能分析,以尝试并尽可能提高其性能。在使用Chrome的Node.js开发工具DevTools完成此任务后,我想到了尝试尝试Jetbrains的Spy-js,到目前为止我还没有碰到运气。
该应用程序是从Docker容器内部运行的,并且代码是通过babel-cli快速转译的,因此这肯定会使事情变得复杂。即使我可能可以使它在Docker外部运行并以某种方式将其连接到其他容器,但由于无法通过Spy-js运行该应用程序,我无法尝试。
Spy-js与DevTools的不同之处在于,它不仅通过本机检查器的调试端口与该应用程序连接,而且还要求该应用程序从该工具运行 ,以便它也可以即时拦截和修改脚本执行(根据其文档)。
由于我使用babel-node
来运行应用程序,因此我尝试在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分析器的包装器,因此将不胜感激。