最近打算玩玩node。前端
众所周知,在前端,调试代码有一众自然好工具——浏览器!特别是 chrome,使得 jser 们如鱼得水,玩得风生水起。可是到了node,状况就不同了,js 代码再也不运行在单纯的浏览器中,而是直接运行在操做系统里,摇身一变成为了一等公民。今后,这node下的js与浏览器就再也不是难兄难弟分不开,而是牛郎与织女,中间隔着一条大银河!node
几年前有同事使用nodejs写了一个邮件服务反向代理,作一些分发和细微处理。用户量不大也不小,可是常常crash。好在node事件机制比较完善,down掉以后能及时重启,因此用起来效果还挺不错。当时同事调试代码主要用node-webkit,我也试用过,挺不错!就好像在浏览器中调试同样,并且能够读写文件,作一等编程语言公民才能作的事,很开生!web
最近看到有同事使用node-inspector调试,熟悉的界面,跟node-webkit差很少。不过我想既然有node-webkit了,又出个node-inspector,确定有不同的地方!抱着这样的好奇心,我开始了折腾node-inspector。chrome
因为是用mac办公,电脑上有现成的node。只须要 homebrew install node-inspector,啪……不一下子就装好了。node-inspector -v,啪!v.0.12.4。而后就是例行的hello world!,以下:npm
1 var http = require('http'); 2 var port = 8080; 3 var fs = require('fs'); 4 5 http.createServer(function (req, res) { 6 res.writeHead(200, {'Content-Type': 'text/plain'}); 7 res.end('Hello World\n'); 8 }).listen(port, '127.0.0.1'); 9 10 11 console.log('Server running at http://127.0.0.1:' + port + '/');
感受很不错,按说明,先执行编程
$ node-inspector
再执行浏览器
$ node --debug-brk server.js
按照上面执行 node-inspector 的说明,在浏览器中打开 tcp
http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 编程语言
执行调试。复制粘贴啪!GOOD!调试界面出来了,很顺利。工具
兴奋之余,不禁自主地刷新了几回浏览器,一闪……一闪……一闪,终究是没有闪出来,页面一片空白!
很伤心!我以为多是端口被别的程序给占用了,用tcp命令查看,发现没有程序占用啊。打开浏览器开发工具,发现了几处错误,是跟RunTime……相关的问题,因而把错误复制狠狠google。果不其然,网上早已有同行在讨论这个错误了!
有的是把浏览器的一些个扩展禁用掉就行了
有的是把chrome用一些控制参数(太复杂也不知道怎么弄)启动就好
有的说node和node-inspector的版本不对
更有甚者,说homebrew安装的可能和npm安装的不一样……
我一一试验,没有一个成功的。把同事电脑上的node-inspector拷贝过来,一样也不行。再后来我精疲力竭,就搁置了。
与这样好一个调试工具无缘,我是坚定不容许这种状况发生的!
因而今天晚上我又开始了折腾。重启几回以后,发现每次重启以后第一次在浏览器中打开是能够的,可是日后就不行。这一次,我是清醒的!因而我琢磨换个端口,有可能跟node-inspector的8080冲突了。因而我改为以下:
var http = require('http'); var port = 8000; var fs = require('fs'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(port, '127.0.0.1'); console.log('Server running at http://127.0.0.1:' + port + '/');
中止sever再启动,刷新浏览器。第一次像往前同样是成功的,刷新,nice!总算成功了!暂时还不清楚深层次的缘由,夜深了就改天再研究了!在这里记录下这一激动人心的时刻!