[nodejs]svn命令行中避免进入用户交互出现卡住的情况

问题

在服务器后台nodejs上使用svn导入变更记录出现“Error: spawn ENOMEM”错误提示,查了下发现是“底层抛了错误,并且设置了errno为ENOMEM,内存不够用


现象

登录到后台系统,发现有很多svn进程驻留在了后台,于是想着应该是异常情况后svn进程出现了驻留不退出的情况


过程

调试发现了两种情况会出现驻留的情况,一种是用户名使用了邮箱全写,比如"[email protected]",这种情况下,会出现需要验证领域的提示;另一种是svn用户名密码输入错误的情况


解决

但是就算用户写错了,后台也需要正常处理才可以,于是想是不是spawn-svn是否含有超时时间的设置,跟踪到底层,发现最终调用了child_process中的spawn方法,查了下child_process中有两个方法用于进程的调用:spawn和exec;两个的区别,可以在网上查找...

发现spawn的参数中没有timeout属性,而exec中有timeout属性,但是因为两种调用方式返回结果不同,就需要修改spawn-svn调用的easy-spawn底层库了,这个处理方式显然不好(1.修改第三方库,后续升级第三方库就麻烦了;2.工作量比较大)...


方案

于是想着在svn命令行上查找一下解决方法,使用svn help info查找帮助文档,查找到参数如下

技术分享

想了下,之前遇到一个问题:如果同台机器切换用户也会出现提示,当时采用了修改配置文件的方式,第一个参数应该就可以把这个问题解决掉...

于是添加上这三个参数后,问题解决了···

svn.getInfo([url, ‘--no-auth-cache‘, ‘--non-interactive‘, ‘--trust-server-cert‘], function(err, info){

转载请注明:http://blog.csdn.net/sogouauto

探索测试奥义,交流测试技术,欢迎关注“搜狗测试”



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。