github air项目中遇到的几个问题及解决(nodejs居多)

https://github.com/cambecc/air 

1、按照github中给出的步骤,执行到npm install,项目中的package.json包含了要安装的包的版本,但是安装的时候,pg和iconv模块提示gyp rebuild错误一开始怀疑版本的问题(卸载nodejshttp://www.cnblogs.com/snandy/p/4418615.html,然后下载你所需的版本),但是把版本调整到package.json提示的版本还是不行,于是重新clone一份,把package.json文件去掉,一个一个的npm install,pg和iconv安装通过(具体问题不清楚,只能用这种笨办法),出现了第二个问题。

2、express 4中的模块相较于express 3 都单独出来了,需要单独安装,express3和4两者的差别挺大的。此时,需要制定安装express的版本,npm install express@3.8.4,此条命令即可。

3、在terminal中输入node server.js 8080 postgres://postgres:post@localhost:5432/air www.kankyo.metro.tokyo.jp,提示拒绝连接的问题(

2015-11-08T06:53:37.516Z - error: Error: connect ECONNREFUSED

at exports._errnoException (util.js:746:11)

at TCPConnectWrap.afterConnect as oncomplete

Potentially unhandled rejection [2] Error: connect ECONNREFUSED

at exports._errnoException (util.js:746:11)

at TCPConnectWrap.afterConnect as oncomplete

),不知道问题出在了哪?于是回到webstorm中,把这条命令分解(process是接受参数的)到文件中直接赋值,输出了两个get(

2015-11-08T06:53:37.493Z - info: get: www.taiki.kankyo.metro.tokyo.jp/cgi-bin/bunpu1/p160.cgi?no2===1==2====2=

2015-11-08T06:53:37.499Z - info: get: www.taiki.kankyo.metro.tokyo.jp/cgi-bin/bunpu1/p160.cgi?no2===2==2====2=

),然后命令就死了,于是设置断点调试和log.info()输出,最后确定了拒绝连接是发生在向网站请求数据的时候,而不是往postgres中写入数据的时候,因为我们已经可以在数据库中建立表,写入数据应该不成问题(其中,也设置了postgres数据库权限,但不起作用)。

再去搜索nodejs中http.get方法的问题,无意之间看到get方法中的url需要加http头的(http://www.cnblogs.com/vimsk/archive/2012/09/22/2697806.html)而自己没有加(期间,自己曾把www.taiki.kankyo.metro.tokyo.jp/cgi-bin/bunpu1/p160.cgi?no2===1==2====2=放到浏览器地址栏中访问,出现了内容,但浏览器是默认省略http头的,自己忽略了这个问题)。于是把http加上(node server.js 8080 postgres://postgres:post@localhost:5432/air http://www.taiki.kankyo.metro.tokyo.jp/cgi-bin/bunpu1),正常运行。

4、思考:遇到问题总是能够解决的,具体思路主要有三个:

  • 冷静的看你输入的参数和他人执行成功时输入的参数的区别这个有时候很坑的
  • 提示的错误是什么。
  • 经验、想象力和猜想告诉我们出现在哪,
  • 设置断点调试alert、console.log输出位置,这样一步一步往下走看具体错到哪了?
原文地址:https://www.cnblogs.com/nidaye/p/4950265.html