在新版本的节点中,node-inspector是内置的,可以使用命令node --inspect index.js
来触发。但是,这总是提供一个命令行,您必须将地址插入地址栏。我知道这可能不是最“安全”的,但有没有办法消除复制和粘贴步骤?我可以让node --inspect自动打开Chrome
回答
有一个单独的工具可以做到这一点,称为inspect-process,但没有内置的支持。
据我所看到的,(C++)代码,在开始检查以及输出调试消息是在这里:
https://github.com/nodejs/node/blob/master/src/inspector_socket_server.cc
具体的功能,InspectorSocketServer::Start
,PrintDebuggerReadyMessage
我没有看到任何功能在此代码中自动打开浏览器(在编写v7.4时),但会提示以下其中一项:
- 打开这里https://github.com/nodejs/node/issues
- 功能请求自己实现的功能,并提交一个PR
- 使用inspect-process
它正在工作。 debug-brk也可以工作。 inspect --debug-brk index.js – Rob
我正在寻找同样的问题的答案,我发现了两个不错的工具:
NIM看起来更加先进,它能够自动检测节点实例,它对我当前的设置起到非常好的作用。我使用nodemon
在文件发生更改时自动重新启动节点服务器。除此之外,我还安装了带HMR(Hot模块重新加载)的Webpack,我的文件夹总数覆盖范围为/public
和/server
。我花了2周的时间学习如何设置,但现在它开始取得成功。
npm install -g nodemon
npm install -g ts-node // In case you use typescript
nodemon.json
{
"verbose": false,
"watch": ["server/**/*.ts"],
"ext": "ts js json",
"ignore": ["server/**/*.spec.ts"],
"exec": "set DEBUG=app:*,-not_this & ts-node --inspect --debug-brk server/main.ts"
}
set DEBUG=app:*,-not_this
用于从Visionmedia debug
使能输出(!)目前还an issue与debug()
在Chrome检查为不打印文本,但是至少在命令行中可以看到文本。我使用命令行来查看调试语句和检查器来展开对象。
编辑
同时,我发现了一个比较难看的修复,但我做这项工作,部分...颜色元数据被忽略,更糟糕它在字符串渲染。所以这会严重影响可读性。但是,嘿...我有一些原木出来,然后什么都没有。
我最近遇到的另一个问题是NIM没有正确连接。最后,我想通了,我需要输入实际的IP地址127.0.0.1
在NIM配置面板,而不是localhost
debugOff
它只是一个简易的方式有日志暂时关闭,直到我回来需要他们。
// Debug
let debugOff = (...any: any[]) => { }, debug = require('debug')('vs:ServerApp');
// Workaround for debug working with node inspector in chrome
let Debug = require('debug');
Debug.log = console.log.bind(console);
/**
* Listen for incoming requests
*/
public listen(): void {
debug('Start server');
debugOff('Server port:', SERVER.port); // This would be usually too verbose
由于多种原因,这是不可能的。
- 启动Chrome(或其他“桌面”应用程序)取决于平台。核心节点无法做到这一点,它会增加不必要的复杂性(例如,想想发现安装位置,处理未安装的Chrome等)。
- 这将绑节点到浏览器,这是不期望的。
- Chrome不提供一种方法来从命令行中传递devtools URL。
你说的是完全正确的,但回答完全不同的问题。我们可以让Chrome发现活动的节点会话,而不是让节点处理产生的Chrome实例。 – jpeltoniemi
@Pichan Chrome已经做到了。 – Eugene
我的观点正是如此。 – jpeltoniemi
在铬60+有(在devtools以及node.js的图标,同时节点正在运行)的项目在URL chrome://inspect/#devices
“开放专用DevTools为节点”,打开的检查窗口将连接到节点.js一旦启动或重新启动,因此无需每次都手动打开它。
虽然这不是特别是回答这个问题,它使问题不太相关 - 一旦连接,你不需要重新连接。
我尝试了这里的所有建议和其他帖子e.g.,但是我发现一旦supervisor watch生成了一个新的GUID,调试中的选项卡就不会重新连接 - 该选项卡中的地址已过时。
但是我发现在Chrome(58)标准开发面板新的链接,打开一个新的“无头”窗口,并重新连接神奇无论应用如何重建/重新启动。
我发现新窗口不太可用,因为我更喜欢一个选项卡,但自动重新连接是如此可靠我会忍受!
我发现的唯一缺点是它重新连接时会清除所有断点。
更新: 我发现如果使用Chrome Debug> Sources> Threads> Main下的“Connect”链接打开几个调试窗口,则可以解决重新加载时断点问题。他们中的大多数将是空白的,甚至没有任何其他来源,但是正确连接的来源最终会保留其书签。我不知道为什么这个黑客行得通 - 我错误地发现了它。
另外this Hackernoon article讨论了这个问题,建议使用the tool NIM作为解决方案,并对管理检查员进行了总体改进(也由Adrian Moisa在答复中提出)。
更新(08/2017)
看来Chrome的V60已更改节点的DevTools,动我的JS开发工具左上角的导航栏描述一个绿色的小盒子图标链接。
但是现在我的断点破解不再起作用,因为你不能再打开多个窗口。可悲的是,他们还没有解决消失的断点问题。所以现在我又回到了关闭它并重新打开它的每一次......这是额外的烦人,因为它甚至不记得它的窗口位置(我喜欢将它与前端JS调试窗口区分开来同时使用全堆栈......),也没有关闭所有这些源文件选项卡的事实(现在我会停止咆哮)。
是的!使用Node.js V8 --inspector Manager (NiM) Chrome的插件,它会打开Chrome的自动的,当我运行node --inspect-brk app
在一个侧面说明 - 与Visual Studio代码调试已经成为一种微风
现在,在现代铬(我有V64,不知道低版本),在Chrome控制台键入
chrome.send('open-node-frontend')
打开一个窗口,自动连接到处理的NodeJS
(也可以通过chrome://inspect
)
您还可以启动和关闭检查编程
(见
或者使用kill -USR1 $PID
的文档https://nodejs.org/dist/latest/docs/api/inspector.html),其中$PID
是您的节点进程的PID
(但我不知道如何阻止它,并且它不可能指定主机和端口,它将使用localhost:9229
)
- 1. 打开Chrome并关闭活动(但让Chrome打开)
- 2. node debug/inspect require returns undefined
- 3. 自动打开的Chrome应用程序
- 4. 打开Chrome使用自动热键(AHK)
- 5. 新的Chrome Inspect工具栏
- 6. 我可以打开一个文件让R运行代码吗?
- 7. Android:如何让我的应用程序自动打开?
- 8. (node:6868)[DEP0062] DeprecationWarning:`node --inspect --debug-brk`已弃用
- 9. 我可以使用锚点打开Chrome开发人员工具吗?
- 10. 我可以让ruby打印动态方法的源代码吗?
- 11. 使用Node js和Google Chrome打印pdf
- 12. 我可以通过什么来打开?
- 13. MySql连接,我可以打开它吗?
- 14. 灯箱,可以自动打开,具体取决于url路径
- 15. VLC:当Livestreamer打开流时,是否可以自动记录?
- 16. 我可以在TextPad中自动保存打开未保存的文件吗
- 17. 当我使用WebQR扫描时,是否可以自动打开URL
- 18. 如何让Chrome自动运行扩展?
- 19. 我可以让Xcode垂直自动完成参数吗?
- 20. 我可以让Jquery slideViewer自动播放吗?
- 21. 我可以让Delphi自动编译RC文件吗?
- 22. 我可以自动让R安装软件包吗?
- 23. 打开Chrome与硒
- 24. 搜索在Chrome Inspect元素中消失
- 25. 如何自动打开Selenium(C#)中的Chrome Devtools选项卡?
- 26. 我可以从InAppBrowser中打开Facebook应用程序或新的Chrome窗口吗?
- 27. 是否可以将Google Chrome作为ConEmu/Cmder选项卡打开?
- 28. Google Chrome可以打开本地链接吗?
- 29. 我的网站无法在IE中打开。它可以在Chrome和Firefox中打开。有任何想法吗?
- 30. 我的网站可以通过Chrome打开,但不能通过IE浏览器打开
你学会了如何做到这一点?我正在寻找相同的答案。我使用nodemon和webpack热重新加载,我一直松开检查器连接。 –
@AdrianMoisa看看我的答案。 – Ali
http://june07.com/nim http://june07.com/inspect-broke-my-workflow已经表明,但该工具很好地完成了这项工作。 – 667