优雅的使用Chrome调试Node程序
前言
我不知道大家用什么来调试node程序。可能有的人用
node-inspect,但是这货很久没更新了,而且一堆的bug用起来很不爽;可能有的人用命令行来,但是这样操作不够灵活;还有人只用console,这太不优雅;总之,调试node我们是认真的,我们需要更趁手更优雅的方法。这篇文章将向你分享如何优雅的使用Chrome DevTools来调试node代码。
Chrome DevTools是从什么时候开始支持node调试、他怎么支持的、都经历了几个版本的变化啊这些陈芝麻烂谷子我们不关心(其实我不知道),我们只关心我们如何才能用上这种方法。只需三步。
Step 0 检查你的环境
要使用这种方法是有限制的。需要[1]
- Node.js 6.3+
- Chrome 55+
对我们不需要其他的,很纯粹,一个node一个chrome足矣。
Setp 1 跑起你的程序
使用方法很优雅,只需用下面的命令把你的node代码跑起来
node --inspect app.js
如果你想让他在第一行就停下来,等待调试也可以使用
node --inspect-brk app.js
然后就会得到形如下面这样的输出
Debugger listening on ws://127.0.0.1:9229/4dc825ec-a204-46f8-8edc-4afadc8da61a
For help see https://nodejs.org/en/docs/inspector
Setp 2 调试界面在哪里
好了,程序现在已经可以开始调试了,只是我们需要找找调试界面在哪里。
我知道有两种方式可以打开调试界面
- 在Chrome中打开chrome://inspect/#devices,我们会看到形如这样的一个界面
没错这里列出来了我们用上面的命令跑起来的程序,我们从这里进入调试界面,点击那个inspect即可进入调试界面。 或者,我们打开这个url
chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9229/dc9010dd-f8b8-4ac5-a510-c1a114ec7d29我们需要把后半部分的UUID替换成命令行输出的那个UUID,就是这个东西
4dc825ec-a204-46f8-8edc-4afadc8da61a
通过以上两种方式我们都可以打开调试界面,这个界面长这样。
四个Tab:Profile、Console、Source、Memory,与chrome控制台一样的配方,与node-inspect的一样的味道,在调试功能上更是原汁原味(由于本篇侧重分享这一方法,所以这里不再赘述调试技能)。
结语
至此,一个不需要安装其他工具的优雅调试方法分享完毕,但是我们还是要注意一下这里面的一些问题。
--inspect调试默认监听9229端口,可以通过--inspect=9222指定端口- 开始调试程序时候输出的
ws://127.0.0.1:9229/4dc825ec-a204-46f8-8edc-4afadc8da61a我打不开,我也不知道为什么,希望有人告知
参考文档
- http://cnodejs.org/topic/58e0597a6c1696ed2dc52d96
- https://nodejs.org/api/debugger.html#debugger_v8_inspector_integration_for_node_js
- https://hospodarets.com/nodejs-debugging-in-chrome-devtools#what-you-need
优雅的使用Chrome调试Node程序的更多相关文章
- 使用webstorm调试node程序
前言 相信大家接触过不少node代码了,如果你应用的比较初级或者针对你的项目不需要接触过深的node代码,也许你仅仅需要简单的console.log('your variable')就完全满足你的需要 ...
- 用 chrome 调试 node.js 代码
1.全局安装 node-inspector cnpm install -g node-inspector 2.启动node项目入口文件,如 node --inspect index.js 3.控制台 ...
- 本地chrome调试服务器node
Node内置了V8引擎提供的 inspector 调试器,可以通过 TCP 协议从外部访问这个调试器,方便对Node程序进行调试.启动调试的标志有: Flag Meaning --inspect En ...
- 调试 node.js 程序
调试 node.js 程序 在程序开发中,如何快速的查找定位问题是一项非常重要的基本功.在实际开发过程中,或多或少都会遇到程序出现问题导致无法正常运行的情况,因此,调试代码就变成了一项无法避免的工作. ...
- flex chrome浏览器调试flex程序
flex chrome浏览器调试出现空白的解决方法: 1,为chrome安装flash player,禁用chrome自带的flash player:参考:http://www.jb51.net/ar ...
- 使用 pm2 优雅的部署 node 程序
使用 pm2 优雅的部署 node 程序 # 启动并监控名字为 XXX 的 npm run start:dev 命令 pm2 start npm --watch --name XXX -- run s ...
- 使用Chrome DevTools直接调试Node.js与JavaScript(并行)
Good News: 现在我们可以用浏览器调试node.js了!!! 前提 Node.js 6.3+, 这个可上Node.js官网自行下载: Chrome 55+. 如果您本地的chrome升级到最新 ...
- 移动设备真机调试本地程序的Node.js【无需连wifi】
前提: 在某些场景下,我们需要调试我们的Node.js,这很简单,很多编辑器都集成了debug模式,但是某些场景下,我们想在移动设备上运行,在本地debug,这也行,只需要链接在同一个内网,通过ip ...
- 用node-inspector调试Node.js(转自NOANYLOVE'S BLOG)
原文地址:http://www.noanylove.com/2011/12/node-the-inspector-debugging-node-js/ 用node-inspector调试Node.js ...
随机推荐
- mybatis 和hibernate的区别
mybaits 是不完全的orm(对象关系映射(Object Relational Mapping)框架,需要自己书写sql语句 mybatis学习难度必hibernate低适合关系型模型要求不高的软 ...
- 升级fedora 18到fedora 19
猫终于发布了,之前看过gnome 3.8的介绍视频,感觉比3.6比起来要好太多了,所以很期待,全新安装也太麻烦,所以准备升级安装.fedora提供有升级工具fedup,升级起来还是比较方便的.下面结合 ...
- [mysql使用(3)] 使用mysql的时候遇到的一些错误
1.Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题. [Err] 1055 - Expression #1 of ORDER BY clause is not in ...
- 浅试 Webview 一app 加载 H5小游戏
整体架构: InventionActivity:实现UI的实例化,基本的按钮Activity之间跳转 GameActivity:实现UI的实例化,Webview的基本使用 MyProgressDial ...
- 简易RPC框架-上下文
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- lua State加载部分库
lua State加载部分库 在lua中,通常我们用luaL_openlibs(L)加载所有的lub标准库,但是有时候我们想只加载部分,有没有什么好的办法呢?在luaproc看到如下办法: stati ...
- 349B - Color the Fence
Color the Fence Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- 2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest J Cleaner Robot
Cleaner RobotCrawling in process... Crawling failed Time Limit:2000MS Memory Limit:524288KB ...
- document.body.scrollTop 值总为0
http://www.jb51.net/article/21168.htm 页面具有 DTD(或者说指定了 DOCTYPE)时,使用 document.documentElement. 做页面 ...
- form 表单处理
submit相关 当使用 submit 按钮或者 image 或者button type="submit" 来提交表单时,会触发 submit 事件,但是直接javascri ...