-->

How can I make node-inspector restart when node is

2019-01-18 11:14发布

问题:

I use node-inspector a lot. When I edit my code and restart, I get the inevitable

Detached from the target

Error when a new process starts. I always have to go find the tab node inspector is on and restart it.

I was wondering if I could avoid this. For example, send a message to node-inspector from node to tell the browsers tab running node-inspector to restart.

回答1:

Cross-posting slightly from this SO, with an update to this topic.

There is a link in Chrome (58) standard Developer Pane which opens a new "headless" window which reconnects magically to node inspect no matter how the app is rebuilt / restarted.

I'm running Express.js e.g. DEBUG=myapp:* supervisor -- --inspect bin/www & and found it difficult to reconnect using the normal guid-laden URL which keeps changing. But this Chrome tool works all day reconnecting reliably.

Under Threads > Main, you should see "Node instance available. Connect".

I find the new-window less usable as I'd prefer a tab, but the auto-reconnect is so reliable I'll live with that!

The only downside I've found is when it does reconnect it clears all breakpoints.



回答2:

You don't have to restart the Node Inspector process itself when the debugged process was restarted. All you need to do is reload the browser tab with Node Inspector GUI.

I am afraid there is no easy way at the moment for automatically reloading the Node Inspector GUI page when your debugged process is restarted. It is probably possible to perform some kind of active polling in Node Inspector backend, but that's a feature that would have to be implemented by somebody.

Depending on what part of your application you are debugging, you might find useful the feature "Live Edit". It allows you to edit your code from Node Inspector, save the changes to the Node/V8 runtime and possibly back to disk too. That way you don't have to restart the debugged process after you made your changes.


This feature has been implemented in Node Inspector and released in v0.7.0. See issue #266 for more details.



回答3:

This feature has been implemented in Node Inspector and released in v0.7.0. See issue #266 for more details.

Previous answer here's a workaround:

I wrote a simple js script to be executed by greasemonkey/tampermonkey.

The script looks for the message "Detached from the target" on tab with address http://127.0.0.1:8080/debug?port=5858. Once the message is visible the page reloads until it disappears.

This solution is a workaround. It shouldn't be considered the ideal solution (I agree with Miroslav), here follows:

// ==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();


回答4:

Sure, it's easy. First install npm install -g nodemon

Then you can run node-inspector & nodemon --debug app.js

(replacing app.js with the name of your script)

Though on syntax error you still may need to reload node-inspector tab manually