如何在节点debugging器中禁用“第一行中断”

有没有一个命令行参数或环境variables,禁用节点debugging器的“第一行中断”function?

节点中实际上有两个debugging器概念:V8debugging器(使用基于TCP的协议)和节点命令行debugging器(CLI)。

运行node debug app.js ,将在主节点进程中运行debugging器CLI,并为debugging脚本( node --debug-brk app.js )生成新的子节点进程。 选项--debug--debug-brk用于在subprocess中打开V8debugging器。

--debug--debug-brk之间的区别在于后者在第一行添加了一个断点,以便执行立即停止在那里。

我会build议你这个解决scheme:

  1. 从Web服务器创buildsubprocess时,运行node --debug而不是node debug 。 这样,只有一个subprocess被创build,它正在运行你的应用程序,并且不会在第一行暂停。

  2. 现在,您可以使用任何支持V8debugging器协议的debugging工具 – 节点内置的CLIdebugging器, 节点检查器或者您可以事件实现您自己的debugging器前端(GUI)(如果您喜欢的话)。 (我认为这是你通过在后台运行CLIdebugging器来实现的吗?)

    如果您决定使用内置的CLI,则只产生另一个subprocess,并告诉节点CLIdebugging器连接到步骤1中启动的进程:

    node debug localhost:5858

    并继续像以前一样。

根据这个问题,我已经在节点回购中打开了,目前这是不可能的。 这也是节点家伙看不到的function, 因为它看起来没有什么意义。[…]附加到正在运行的进程确实是“同样的事情。 请参阅上述问题的其余讨论。

如果你认为你需要这样一个function,请对此进行表决,在Github的问题上留下评论,如果没有回应,请打开一个新post,并在这里发布。

find答案的同时自己 – 似乎你可以简单地运行

node-debug --debug-brk=0 (progname)

希望这有助于某人。

写一个扩展名来点击开始button

1.运行shell

 mkdir run_as_devtools cd run_as_devtools touch manifest.json touch run_as_devtools.js 

2.编辑文件

run_as_devtools.js:

 if (location.protocol === 'chrome-devtools:' && location.href.match(/ws=localhost/))(function () { 'use strict'; setTimeout(function () { try { document.querySelector('html /deep/ .long-click-glyph').click(); } catch (e) { console.log(e); } }, 500); })(); 

manifest.json :(它使用chromevox的键,所以不要使用它与chromevox)

 { "content_scripts": [{ "js": [ "run_as_devtools.js" ], "matches": [ "<all_urls>" ] }], "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB", "manifest_version": 2, "name": "Elevated Devtools extension", "version": "1.0" } 

3.安装扩展

Chrome设置 – 更多工具 – 扩展 – 开发者模式 – 加载解压后的扩展名 – selectrun_as_devtools文件夹

PS更好地使用它与节点检查器pipe理器https://stackoverflow.com/a/43018133/4831179

参考: https : //stackoverflow.com/a/17044405/4831179

我通过从节点v6切换到v7解决了同样的问题

与blackmiaool的想法类似,但更简单,与节点v8,你可以用–inspect启动脚本。 如果您有以下代码,当您在Chrome开发工具中打开debugging窗口时,会直接进入debugging点。 此外,这允许您通过点击“继续”button来执行asynchronous代码,它允许您的代码在返回到repl之前运行:

 // app_shell.js var UserModel = require("./some_user_model"); function looper() { var Tmp = { UserModel: UserModel }; debugger; setTimeout(looper, 100); } looper(); 

而在一个shell脚本中,你可以做如下的事情:

 echo "Click the 'Open dedicated DevTools for Node' link" python -mwebbrowser about:inspect node --inspect app_shell.js 

在这里看到更多的信息