重新启动节点时如何使节点检查器重新启动?
Posted
技术标签:
【中文标题】重新启动节点时如何使节点检查器重新启动?【英文标题】:How can I make node-inspector restart when node is restarted? 【发布时间】:2013-09-22 02:29:27 【问题描述】:我经常使用节点检查器。当我编辑我的代码并重新启动时,我得到了不可避免的
与目标分离
新进程启动时出错。我总是要找到选项卡节点检查器打开并重新启动它。
我想知道我是否可以避免这种情况。例如,从 node 向 node-inspector 发送一条消息,告诉运行 node-inspector 的浏览器选项卡重新启动。
【问题讨论】:
js保存时如何让node-debug进程启动? 【参考方案1】:当被调试的进程重新启动时,您不必重新启动 Node Inspector 进程本身。您需要做的就是使用 Node Inspector GUI 重新加载浏览器选项卡。
恐怕目前没有简单的方法可以在重新启动调试进程时自动重新加载 Node Inspector GUI 页面。可能可以在 Node Inspector 后端执行某种主动轮询,但这是必须由某人实现的功能。
根据您正在调试的应用程序的哪个部分,您可能会发现“实时编辑”功能很有用。它允许您从 Node Inspector 编辑您的代码,将更改保存到 Node/V8 运行时并可能还回磁盘。这样您就不必在进行更改后重新启动已调试的进程。
此功能已在 Node Inspector 中实现,并在 v0.7.0 中发布。详情请见issue #266。
【讨论】:
"您需要做的就是使用 Node Inspector GUI 重新加载浏览器选项卡。"我知道这一点 - 因此在问题中提到重新加载浏览器选项卡。 您可以使用 LiveReload for Chrome 或 AutoReload for Firefox 重新加载调试选项卡。【参考方案2】:此功能已在 Node Inspector 中实现,并在 v0.7.0 中发布。详情请见issue #266。
上一个答案这里有一个解决方法:
我写了一个简单的js脚本,供greasemonkey/tampermonkey执行。
脚本在地址为http://127.0.0.1:8080/debug?port=5858
的选项卡上查找消息“已与目标分离”。一旦消息可见,页面就会重新加载,直到它消失。
此解决方案是一种解决方法。它不应该被认为是理想的解决方案(我同意 Miroslav),如下:
// ==UserScript==
// @name Reload node-inspector tab
// @version 0.1
// @description looks for the detached message and auto reload the page
// @match http://127.0.0.1:8080/debug?port=5858
// ==/UserScript==
var exec = function()
setTimeout(function()
var el = document.getElementsByClassName("help-window-title")[0];
if(el && el.innerhtml == "Detached from the target")
location.reload();
else
setTimeout(function() exec(); , 1000);
, 1000);
;
exec();
【讨论】:
多么漂亮和优雅!这应该很容易在 Node Inspector 中实现,请参阅 github.com/node-inspector/node-inspector/issues/266。 此功能已在 Node Inspector v0.7.0 中发布。享受吧! @MiroslavBajtoš 如果您添加“升级节点检查器”作为答案,我会将其标记为正确。【参考方案3】:来自this SO 的少量交叉发布,并对此主题进行了更新。
Chrome (58) 标准开发者窗格中有一个链接,它会打开一个新的“无头”窗口,无论应用程序如何重建/重新启动,它都会神奇地重新连接到节点检查。
我正在运行 Express.js,例如DEBUG=myapp:* supervisor -- --inspect bin/www &
发现很难使用不断变化的普通 guid-laden URL 重新连接。但是这个 Chrome 工具可以整天可靠地重新连接。
在 Threads > Main 下,您应该会看到“Node instance available. Connect”。
我发现新窗口不太好用,因为我更喜欢一个选项卡,但自动重新连接非常可靠,我会忍受的!
我发现的唯一缺点是当它重新连接时会清除所有断点。
【讨论】:
【参考方案4】:当然,这很容易。先安装npm install -g nodemon
然后你可以运行node-inspector & nodemon --debug app.js
(将 app.js 替换为您的脚本名称)
尽管出现语法错误,您仍然可能需要手动重新加载节点检查器选项卡
【讨论】:
【参考方案5】:Step1. 不要使用node-inspector
- chrome 团队已经发布了新作品,无法与 node-inspector 模块集成。如果您继续使用node-inspector
,您将错过这些功能。
Step2. 要运行您的脚本,请使用:nodemon --inspect-brk yourScript.js
- brk 部分在第一行代码上创建一个自动断点。如果您尚未安装 nodemon,请先使用:npm install -g nodemon
。
Step3. 然后打开 chrome 应用,打开 chrome 开发工具(F12
或 Ctrl+Shift+I
)并点击节点图标,如下所示:
Step4. 更改yourScript.js
- chrome devtools 会自动为您在项目中所做的每一项更改重新加载调试器。这是因为 nodemon 监视项目文件夹并重置进程 - 这会重置调试器连接。
更多:Debugging in 2017 with Node.js - 我在 2019 年 8 月 29 日写这篇文章,但 2 年后仍然相关。
【讨论】:
视频是否包含“步骤 1”中断言的参考?最后我检查了(节点 10 和 12)节点检查仍然是节点文档中的首选调试机制。 这对我来说实际上是正确的解决方案。服务器重启后会重新连接到新的WS。以上是关于重新启动节点时如何使节点检查器重新启动?的主要内容,如果未能解决你的问题,请参考以下文章
WebStorm,使用 Node Supervisor(所以每次代码更改后不必重新启动)?