无法在WebStorm中使用Spy-js配置Babel转换的Node.js应用程序

时间:2018-12-10 22:56:29

标签: javascript node.js docker webstorm profiler

因此,我和我的团队目前正在对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分析器的包装器,因此将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试使用-r babel-register而不是babel-node-它会使情况变得更好吗?

enter image description here

当然,您需要向项目中添加.babelrc,例如

{
  "presets": ["env"]
}