美文网首页
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