在IntelliJ或WebStorm中使用生成器调试JS的更好方法



我正在使用Koa框架开发Node JS中的web应用程序。

所有的流控制都是通过生成器完成的,而不是回调。代码看起来是顺序的,尽管实际的流程不是。无论如何,它看起来比回调地狱干净多了。

下面是一个用koa编写的控制器函数的简单示例:
function *findUserById(userId)
{
    var user = yield getUserOrError404(userId);
    yield loadAdditionalData(user);
    yield data.users.save(user);
    return user;
}

然而,有一个困难:步进代码与yield s在我的IDE (IntelliJ IDEA)不工作得很好。一旦执行到yield语句行,如果我只是"跳过",执行流就会沿着堆栈向上到koa代码(这不是IDE的错,因为它只是遵循生成器、yield语句和Node事件循环的实际执行流)。

目前,我必须为下一个语句设置一个断点,我希望调试器暂停,经常是下一行,然后单击"Resume program"按钮。

当有超过2-3个yield语句时,它会变得乏味。

是否有更好的方法(技巧,插件,…)步进生成器繁重的JS代码,允许步进yield语句,如果它是一个"正常"的顺序语句?

听起来像是Run To Cursor命令的工作-它像一个轻量级的断点一样有效地运行,在执行到光标当前所在的行后被删除。

查看此要点,您可以使用此按钮的屏幕截图,以及我用来检查这是否有效的测试工具文件(它确实;至少在PhpStorm中,所以我希望WebStorm的功能与JS一样)。

编辑:它在IntelliJ中也工作得很好。除了截图中显示的按钮外,您还可以通过右键单击该行,然后单击上下文菜单中的"运行到光标"来触发它。或者按[alt]+[F9]快捷键

最新更新