node.js调试debugging经验分享

当经过打印日志调试不太够用的时候:node

当你看见这种状况你怎么作?

你可能会逐行代码去检查来找出错误,若是没有找到,你可能会用 console.log来查看代码的一些运行输出,这是很痛苦的一件事情,那么有没有其余更好的方法呢?

console.log来调试 JavaScript 服务端代码是很是古老的方法

console.log是彻底不够用的,他须要咱们逐行的调试,而且每一次都要重启咱们的服务。打印日志的调试代码也会影响咱们代码的结构性,它是没有必要的代码,咱们还要花些功夫移除它。git

例如:github

须要花多少精力才能从日志中找出咱们须要的信息和执行过程?chrome

这看着就让人头疼,这不是一个好的方法!express

一个更有效更好的方法应该是断点调试。对于断点调试,咱们能够经过步入堆栈信息和事件循环来找到问题。npm

你若是明白了这个方法,哪就来看看其余的选择,有哪些选择?我很高心你能这么问我!浏览器

Node 自己构建了 inspector

对的,Node 确实自己就构建了 inspector,node 的 inspector 使用了 V8 的调试协议视图。bash

让我给你试试,新建一个 node 项目app

mkdir node-debugging && cd node-debugging && npm init -y  && npm install express nodemon && touch server.js
复制代码

开始咱们的项目,而后安装 express 和 nodemon:ide

node server.js
复制代码

如今咱们有了一个 express 基础服务,可是咱们不是用传统的方法node server.js来启动服务,咱们添加一个额外的阐述到咱们的命令行,--inspect来通知 node 暴露这个新的 debugger 协议。

一旦咱们用 inspector 的方式来启动服务,这儿就会有一个输出:

对的,他开始工做了!用 chrome 来打开 http://localhost:3000这个连接,在开发者工具里面,有没有观察到额外的一个东西?

node 存在在咱们的浏览器里面?确实!咱们任然可使用咱们的 app 像以前同样—— localhost:3000.
http://0.0.0.0:9229/端口是为开发者提供的。

Node 的 Inspector 作了什么?

node 的 Inspector 让你用开发者工具用户界面直接调试 node,他能够直接链接到 node 的运行进程!

若是你知道他在 Firefox 和 Safari 中是怎么工做的,那咱们来一块儿讨论讨论。

使用 debugger

使用 node 的 debugger 和使用 chrome 客户端的开发者工具相似,设置断点、执行代码、步入断点、找出 bug。

你能够想一想这个是多么的有用,若是咱们有一个错误在一个大的 controller 里面!咱们能够经过这个 debugger,查看调用堆栈、做用域、环境变量,全局变量等等,这是颇有用的一个工具!

试试例外一个工具

然而咱们并无止步,在 2018 年七月 20 号对于调试 node 是特别的一天。 为甚? 谷歌 chrome 实验室团队,开源了他们先进的调试工具:ndb

Ndb 对于调试是一个好的调试工具。来看一下。

安装 ndb

npm install -g ndb
复制代码

就和其余的 npm 包同样,只须要安装就能够开始使用。

使用

使用 ndb 的时候,只须要在命令行前面 加上 ndb 就好。

让咱们重启服务——注意咱们使用的 nodemon——和其余传统项目同样。

咱们有了一个单独的 chrome 实例来调试 node,多棒!

咱们甚至能够拿到 node 的 process 全局对象——就比如它是 node 的window对象。

相关文章
相关标签/搜索