美文网首页
node.js 调试

node.js 调试

作者: Gaarahan | 来源:发表于2019-07-22 19:53 被阅读0次

这两天折腾出了一些nodejs的调试方法,做个记录


断点调试

  • nodejs官方指定的调试工具是chrome,在使用命令行启动时,为其加上--inspect选项,打开chrome浏览器的开发者工具就可以看到调试工具的按钮,点击即可打开
node --inspect index.js 
  • nodejs的调试工具与浏览器控制台的功能相比较少,常用的consolesources的功能与浏览器上基本相似,

  • 该工具中最常用的是断点调试,用法不再赘述

  • 注意在一些立即执行的nodejs脚本中,当你打开调试工具时,代码已经执行完了,使用这条命令node --inspect-brk a.js可以为你脚本的第一行打上断点,这时候就可以不紧不慢的打开调试工具了

请求分析

  • 对于写nodejs服务端的我来说,调试工具中最重要的应该是Network工具,但调试工具中并没有该工具,折腾之后选择了一个一个用nodejs写的抓包工具 --- whistle

  • 该工具类似一个nodejs的全局服务器,安装也使用npm :
    npm i -g whistle,安装完成后使用w2 start启动服务

  • 下载并信任证书(mac)


  • 该工具能拿到我们请求的原因是我们将它作为了一个代理服务器,只有我们将请求交给它来代理,它才能进行请求的分析,转发,修改等操作,因此我们需要配置服务的代理

  • 通过配置代理,我们可以将nodejs,浏览器,甚至其他应用的请求进行捕获,这里只介绍nodejs的代理配置

  • 个人在nodejs请求使用的是request,在开发时使用该形式为其添加默认的代理即可

const request = require('request').defaults({'proxy':'http://127.0.0.1:8899'});
request.get('http://www.bing.com');
  • 此时打开whistle控制台,已经可以看到被捕获的请求了

HTTPS

  • 注意: 此时的代理只能处理http请求,当需要使用request发送https请求时,若还是这样写,会有这样的报错:

    出现这个错误是因为对方网站的证书不正确导致的,个人理解是我们将https请求交给了代理服务器,但请求本身会先校验对方网站的证书是否安全有效,默认会拒绝未认证的请求,此时我们可以配置rejectUnauthorized来忽略这个规则

AXIOS 代理

  • 如果使用axios做请求,配置全局代理的方式有所不同
const axios = require('axios').create({
  proxy: {
    host: '127.0.0.1',
    port: 8899
  }
});

相关文章

网友评论

      本文标题:node.js 调试

      本文链接:https://www.haomeiwen.com/subject/bqhglctx.html