Node.js调试技术总结分享

 更新时间:2017年03月12日 16:27:18   作者:moonz-wu  
Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

前言

众所周知调试技术与开发技术构成了软件开发的基石。目前Nodejs作为新型的Web Server开发栈倍受开发者关注。总的来说Nodejs的应用程序主要有两部分:JavaScript编写的js模块和C语言编译的二进制模块。

这里主要介绍三种avaScript模块的调试方法:基于Nodejs内建的调试器,基于V8调试插件和基于Chrome浏览器的调试器。

以下所有的操作都将基于如下代码(example.js):

var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
 var path = url.parse(req.url).pathname;
 res.writeHead(200, {'Content-Type': 'text/plain'});
 res.end(path);
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

一. 基于Nodejs内建的调试器

Nodejs提供了一个内建调试器来帮助开发者调试应用程序。想要开启调试器我们需要在代码中加入debugger标签,当Nodejs执行到debugger标签时会自动暂停(debugger标签相当于在代码中开启一个断点)。代码如下:

var path = url.parse(req.url).pathname;
debugger;
res.writeHead(200, {'Content-Type': 'text/plain'});

执行命令:node debug example.js 就可以进入调试模式。

在debug模式下,可以使用内建命令如repl去评估变量和表达式的值(如2所示)。我们也可以通过help命令来获取完整的调试命令列表。

Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version

二. 基于V8插件的调试器

Nodejs是基于google V8的引擎上构建的,Google为Eclipse提供了一个对应的调试插件。关于如何在Eclipse中安装和调试Nodejs程序就不再重复描述了,网上已经有很多的文章了,唯一要注意的是在默认情况下V8引擎支持的调试模式是本地模式。如果想要开启远程调试的话,我们需要修改Nodejs中的V8源文件: /deps/v8/src/platform-posix.cc

 addr.sin_family = AF_INET;
 addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); --> INADDR_ANY
 addr.sin_port = htons(port);

然后重新编译Nodejs。

提示:

用插件来调试nodejs程序,你有时候会遇到什么connect refuse, get version failed等等错误。那么请注意你使用的ip的地址, 一般下127.0.0.1的回环地址是都工作的。如果你使用真实的ip地址,请检查防火墙设置。

三. 基于Chrome浏览器的调试器

既然我们可以通过V8的调试插件来调试,那是否也可以借用Chrome浏览器的JavaScript调试器来调试呢?node-inspector模块提供了这样一种可能。我们需要先通过npm来安装node-inspector

npm install -g node-inspector // -g 导入安装路径到环境变量

node-inspector是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听Nodejs的debug调试端口。

默认情况下node-inspector的端口是8080,可以通过参数--web-port=[port]来设置端口。在启动node-inpspector之后,我们可以通过--debug或--debug-brk来启动nodejs程序。通过在浏览器输入http://[ip address]:8080/debug?port=5858,我们会得到如下的调试窗口:

这三种方法各自有优缺点,我个人比较欣赏node-inspector的方式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • node.js中的http.response.removeHeader方法使用说明

    node.js中的http.response.removeHeader方法使用说明

    这篇文章主要介绍了node.js中的http.response.removeHeader方法使用说明,本文介绍了http.response.removeHeader的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • windows利用nvm管理node.js2025最新版

    windows利用nvm管理node.js2025最新版

    本文主要介绍了在Windows系统上使用nvm管理Node.js版本的过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-03-03
  • Node.js中处理错误的4种最佳方法分享

    Node.js中处理错误的4种最佳方法分享

    错误处理并不是编码工作中最吸引人的部分,但在 Node.js 中构建可靠、生产级别的应用程序时,它是绝对必要的,下面小编就来为大家介绍一下Node.js中处理错误的4种最佳方法吧
    2025-02-02
  • 简单了解node npm cnpm的具体使用方法

    简单了解node npm cnpm的具体使用方法

    这篇文章主要介绍了简单了解node npm cnpm的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • nodejs创建简易web服务器与文件读写的实例

    nodejs创建简易web服务器与文件读写的实例

    下面小编就为大家带来一篇node js系列课程-创建简易web服务器与文件读写的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • npm安装慢的问题分析及解决方法

    npm安装慢的问题分析及解决方法

    在Node.js开发过程中,npm install 是安装和管理项目依赖的关键命令,然而,有时我们会遇到 npm install 运行卡住不动的情况,所以本文给大家介绍了npm安装慢的问题分析及解决方法,需要的朋友可以参考下
    2025-03-03
  • node.js 发布订阅模式的实例

    node.js 发布订阅模式的实例

    下面小编就为大家带来一篇node.js 发布订阅模式的实例。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • yarn install命令报错warning package-lock.json found解决办法

    yarn install命令报错warning package-lock.json found解决办法

    这篇文章主要给大家介绍了关于yarn install命令报错warning package-lock.json found的解决办法,文中通过图文将解决的办法介绍的非常详细,还分享了更多yarn install遇到的报错及解决方案,需要的朋友可以参考下
    2024-02-02
  • 在Node.js中实现视频收藏功能

    在Node.js中实现视频收藏功能

    在构建视频分享平台时,视频的收藏功能是用户互动的重要组成部分,本文将介绍如何在Node.js应用中实现视频收藏功能,包括数据模型的创建、业务逻辑的实现以及接口的验证测试,需要的朋友可以参考下
    2024-04-04
  • 基于nodejs+express4.X实现文件下载的实例代码

    基于nodejs+express4.X实现文件下载的实例代码

    本篇文章主要介绍了详解nodejs+express4.X的文件下载的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07

最新评论