我使用节点检查器很多。当我编辑我的代码并重新启动时,我得到了不可避免的
与目标分离
新进程启动时出错。我总是要找到选项卡节点检查器已打开并重新启动它。
我想知道我是否可以避免这种情况。例如,从节点向节点检查器发送消息,告诉运行node-inspector的浏览器选项卡重新启动。
答案 0 :(得分:5)
重新启动调试过程时,您不必重新启动Node Inspector进程。您需要做的就是使用Node Inspector GUI重新加载浏览器选项卡。
我担心在重新启动调试过程时,没有简单的方法可以自动重新加载Node Inspector GUI页面。可能在Node Inspector后端执行某种活动轮询,但这是一个必须由某人实现的功能。
根据您正在调试的应用程序的哪个部分,您可能会发现“实时编辑”功能很有用。它允许您从Node Inspector编辑代码,将更改保存到Node / V8运行时,也可能返回磁盘。这样,您就不必在进行更改后重新启动已调试的进程。
此功能已在Node Inspector中实现,并在v0.7.0中发布。有关详细信息,请参阅issue #266。
答案 1 :(得分:4)
此功能已在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();
答案 2 :(得分:1)
从this SO略微交叉发布,并对此主题进行了更新。
Chrome(58)标准开发人员窗格中有一个链接,可以打开一个新的"无头"无论应用程序如何重建/重新启动,窗口都会神奇地重新连接到节点检查。
我正在运行Express.js,例如DEBUG=myapp:* supervisor -- --inspect bin/www &
并发现很难使用正常的guid-laden URL重新连接,该URL会不断变化。但是这个Chrome工具整天可靠地重新连接。
在主题下>主要,您应该看到"节点实例可用。连接"
我发现新窗口不太可用,因为我更喜欢标签,但自动重新连接非常可靠,我会接受它!
我发现的唯一缺点就是它重新连接时会清除所有断点。
答案 3 :(得分:0)
当然,这很容易。首先安装npm install -g nodemon
然后您可以运行node-inspector & nodemon --debug app.js
(将 app.js 替换为您的脚本名称)
虽然在语法错误时您仍可能需要手动重新加载node-inspector标签
答案 4 :(得分:0)
第1步。请勿使用node-inspector
-chrome小组已经发布了新作品,该作品无法与node-inspector模块集成。如果您坚持使用node-inspector
,那么继续前进,您将错过这些功能。
步骤2。要运行脚本,请使用:nodemon --inspect-brk yourScript.js
-brk部分在代码的第一行创建一个自动断点。如果尚未安装nodemon,请首先使用:npm install -g nodemon
。
第3步。然后打开chrome应用程序,打开chrome开发工具(F12
或Ctrl+Shift+I
),然后单击节点图标,如下所示:
第4步。。对yourScript.js
进行更改-chrome devtools会针对您在项目中所做的每个更改自动重新加载调试器。这是因为nodemon监视项目文件夹并重置过程-这将重置调试器连接。
更多内容在Debugging in 2017 with Node.js-我在2019年8月29日写这篇文章,但两年后仍然有意义。