nodejs,一个回调函数没有执行,大家帮忙看看是什么原因?
项目地址 https://github.com/pana/nrm/blob/master/cli.js
我已经试图联系作者,可是我有点等不急,所以希望大家帮忙看看
当我执行
nrm use *
命令时,我发现在代码130行
setRegistry(r, function (err, result){});
他的回调函数并没有执行,也就是说
Registry has been set to ,r
并没有打印出来
我在66行代码之后加入
console.log(npm);
测试发现可以输出,而在130行之后的回调函数
console.log(npm);
却没有输出,因此猜测问题可能出现在130行代码
亚坦尼斯大主教
11 years, 2 months ago
Answers
没有人回答吗?自己来回答好了。
我发现原因出现
setRegistry(r, function (err, result){})
调用的
run
函数,其中
run
用到
child_process
spawn
,通过子进程执行命令行,问题出现
ls.on('close', function(){});
在ubuntu linux 中 好像不会触发
close
,而将
close
改成
exit
后,问题得到解决。 子进程没有关闭,一系列原因导致
setRegistry(r, function (err, result){})
的回调函数没有执行。
大概原因可能是这样了,但是我还想问问 子进程没有关闭,为什么会导致回调函数没有执行? 这其中的原因我还不是特别清楚。
windf00
answered 11 years, 2 months ago