Node.js 之 Koa2 添加travis ci 持续集成工具

最近使用koa2做项目测试开发,想整合下travisci,网上资料也比较少,于是自己就整了个,做个记录。先来看下travis.yml的配置language:node_jsnode_js:-"6"before_script:-./node_modules/.bin/knexmigrate:latest--knexfile='./app/knexfile.js'script:-npmruntest因为是接口测试,所以首先需要做表创建等操作。测试的命令:NODE_ENV=productionNODE_CONFIG_DIR='./app/config/'./node_modules/.bin/mocha--require'babel-polyfill'--compilersjs:babel-register./app/test/**/*.js主要是测试这里,使用了supertest,大概看下是如何...

node.js 应用性能分析

node.js从4.4.0版本开始内置了profiler,--prof命令选项运行应用会在当前目录生成性能日志文件。简单记录下使用方法运行的时候加上--prof参数nodeapp.js--prof运行后会在当前目录生成一个类似:isolate-0x1d1e1b0-v8-10041.log这样的文件执行如下命令来分析程序的性能node--prof-processisolate-0x1d1e1b0-v8-10041.log具体解析分析的结果请看参考文章参考:诊断node.js应用CPU占用过高的问题EasyprofilingforNode.jsApplications|Node.js

koa2 之 migration with knex

安装knexfilenpminstall-gknex然后在项目的根目录knexinit将会产生knexfile.js,内容类似如下//Updatewithyourconfigsettings.module.exports={development:{client:'mysql',connection:{host:'127.0.0.1',user:'root',password:'',database:'<YOURTESTDBNAME>',charset:'utf8'}},staging:{ ...

Nodejs 之 __dirname 的使用

新建个文件app.js里面的内容如下:console.log(__dirname+'/example.db');console.log('example.db');如果将app.js放在一个根目录下面执行nodeapp.js分别输出如下内容:/Users/durban/nodejs/koa-mysql-orm-model/example.dbexample.db我们建立一个文件夹app,app下建立一个app.js里面的内容如下:console.log(__dirname+'/example.db');console.log('example.db');执行nodeapp.js分别输出如下内容:/Users/durban/nodejs/koa-mysql-orm-model/app/example.dbexample.db可见,__dirname追加了自身的目录路径,一般这样做的好处是,可以避免文件的混乱调用。

Nodejs 数据加密传输

数据加密传输,这个目前我接触的几个方式,一个是密文传输,一个明文传输密文传输,就是用密钥对数据加密,使用公钥对数据解密,传输的通道可以是https的也可以是http的。明文传输,前提是建立一个安全的传输通道,这里使用证书对通道的安全做了防护,然后传输数据,使用的是明文。比较专业的可以后面慢慢分享,不过这里我就介绍下明文传输,如果是用nodejs建立安全通道使用两个库,分别是urllib和request,这里的证书只介绍使用pfx文件urllib库的方式consturllibRequest=(url,method,data,pfx,pass)=>{returnnewPromise(function(resolve,reject){&n...

Nodejs - 通过身份证号验证年龄,出生日期和性别

想要知道自己的年龄,出生日期和性别,或者是别人的,给我个身份证号,我就可以知道,看下面代码。staticvalidateIdNumberToAgeYear(str){letdate=newDate();letcurrentYear=date.getFullYear();letcurrentMonth=date.getMonth()+1;letcurrentDate=date.getDate();letidxSexStart=str.length==18?16:14;letbirthYearSpan=str.length==18?4:2;letyear;letmonth;letday;letsex;let ...

Nginx + Nodejs (110: Connection timed) 错误处理

最近服务器出现问题了,error.log日志里面多了很多的(110:Connectiontimed)这个错误。开始以为是Nodejs的脚本有问题,再请求的时候会有超时的问题,但是检查了一下,并没有发现问题,因为已经对出现问题的错误做了sysError的日志记录,但是在日志里面并没有找到对应的错误信息,很奇怪。也是google下找到了对应的解决方案。参考:http://stackoverflow.com/questions/10395807/nginx-close-upstream-connection-after-requestlocation/{proxy_http_version1.1;proxy_set_headerConnection"";}本来我的upstream中只加了server这段信息的,现在参考了这里的话,也加了下keepalive;upstrea...

Nodejs 中pfx后缀文件的处理

nodejs中,在做加密解密的时候,会得到第三方的各种各样的加密文件,其后缀也就那么几种吧,.key/.pem/.pfx等,是不是可以自定义,反正就是一个文件。但是今天我看了很多的nodejs库好像也没有找到与javakeytool这样的工具,因为在java里面,完全是可以读取pfx,然户进行在进行处理的,如果在nodejs中要如何操作,目前不知道,使用openssl做个转换处理先。第一个命令是:opensslpkcs12-inxxxx.pfx-nocerts-nodes-outdomain_encrypted.key第二个命令是:opensslrsa-indomain_encrypted.key-outprivate.key哪位大神知道的,可以告知下,谢谢了。==================补充=================google上有个办法...

罗列一下提高效率的Nodejs模块

罗列一下提高效率的Nodejs模块,分享之。CheerioFast,flexible,andleanimplementationofcorejQuerydesignedspecificallyfortheserver.Cheerio,说它是服务器端的jQuery一点也不为过,在github上也是大受欢迎,star数达4500有余,至目前为止,已经有923次commit。它兼容jQuery绝大部分的库,以至于你只需要一句$=require('cheerio').load(YOUR_HTML_CONTENT);,便可以像在前端用jQuery一样的舒畅,愉快。Bytheway,和Cheerio类似的框架还有:jsdom,一个受欢迎程度略低于Cheerio,但是它有2,147多的commit,可见维护者之诚意。WaterlineAnadapter-basedORMforNode.jswithsupportformysql,mongo,postgres,redis,andmoreWaterline是从Sails框架衍生出来的Nodejs平台下的...