流程如下:
使用 --debug --inspect 启动代码:
“debug”:“node --max-old-space-size=8192 --debug=5567 --inspect dist/index.js”,
使用提供的 url 打开开发工具,例如:
chrome-devtools://devtools/remote/serve_file/@62cd277117e6f8ec53e31b1be58290a6f7ab42ef/inspector.html?experiments=true&v8only=true&ws=localhost:9229/node
进行一些调试。
意识到您有错误,终止进程 (Ctrl-C) 并更改代码。
重新启动。
启动失败:
无法打开 devtools 套接字:地址已在使用中
意识到您必须手动刷新
chrome-devtools
页面才能使其意识到该进程不再可用。
Node 检查器在这方面做得更好。我有什么遗漏的吗?某些标志将使 chrome-devtools 自动从已停止的进程中分离?
$ versions
npm 3.10.3
node v6.7.0
OS Darwin 15.6.0 Darwin Kernel Version 15.6.0
编辑:我开始使用Node Inspector Manager(Chrome 扩展),发现整个过程要好得多。
最佳答案
我没有这个问题,当我 Ctrl-C
Node 进程时,chrome-devtools 向我显示一条消息,指出调试连接已关闭。
您在什么系统上运行?也许这是在较新的 Node 或 Chrome 版本中修复的问题?或者,您的 Node 应用程序中可能有某些内容阻止正确关闭套接字。您可以尝试使用一个简单的脚本吗?
jcollum 这里(user835611 应该得到答案,因为他们向我透露了消息):
我有两个监听器来监听进程终止信号:
process.on('SIGINT', function() {
logger.warn('SIGINT received. Shutting down.');
return process.exit(0);
});
process.on('SIGTERM', function() {
logger.warn('SIGTERM received. Shutting down.');
return process.exit(0);
});
事实证明,这些阻止了 Chrome 的开发工具看到关闭。我不知道这是如何运作的,但这就是我观察到的。注释掉 process.exit
没有任何改变。奇怪的是,在 SIGTERM/INT
事件上设置监听器似乎会阻止 Chrome 的开发工具看到进程已退出。从未见过事件监听器产生这样的副作用。
关于node.js - 有没有办法让 chrome-devtools (--inspect) 自动从已结束的进程中分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39898914/