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

Pie*_*nry 5 javascript debugging generator intellij-idea node.js

我正在使用Koa框架在Node JS中开发webapp.

所有流量控制都是使用生成器完成的,而不是回调.代码看起来是顺序的,但实际流程不是.无论如何,它看起来比回调地狱更清洁.

这是一个用koa编写的控制器函数的简单示例:

function *findUserById(userId)
{
    var user = yield getUserOrError404(userId);
    yield loadAdditionalData(user);
    yield data.users.save(user);
    return user;
}
Run Code Online (Sandbox Code Playgroud)

但是有一个难点:yield在我的IDE(IntelliJ IDEA)中单步执行代码并不能很好地工作.一旦执行与yield语句一致,如果我只是"跳过",执行流程就会从堆栈上升到koa代码(这实际上不是IDE的错,因为它只跟随生成器的实际执行流程, yield语句和Node事件循环).

目前我必须设置一个断点到我希望调试器暂停的下一个语句,经常是下一行,然后单击"恢复程序"按钮.

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

是否有更好的方法(技巧,插件,......)逐步执行生成器密集的JS代码,允许跳过yield语句,好像它是一个"正常"的顺序语句?

Ben*_*min 3

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

请参阅此要点,获取可用于此目的的按钮的屏幕截图,以及我用来检查这是否有效的测试工具文件(它确实有效;至少在 PhpStorm 中,所以我希望 WebStorm 的功能与 JS 相同)被关注到)。

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