javascript - nodejs,一个回调函数没有执行,大家帮忙看看是什么原因?
黄舟
黄舟 2017-04-10 14:27:15
[JavaScript讨论组]

项目地址 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行代码

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
迷茫

没有人回答吗?自己来回答好了。

我发现原因出现 setRegistry(r, function (err, result){}) 调用的run函数,其中run用到 child_process spawn,通过子进程执行命令行,问题出现ls.on('close', function(){});
在ubuntu linux 中 好像不会触发close,而将close改成exit后,问题得到解决。 子进程没有关闭,一系列原因导致 setRegistry(r, function (err, result){}) 的回调函数没有执行。

大概原因可能是这样了,但是我还想问问 子进程没有关闭,为什么会导致回调函数没有执行? 这其中的原因我还不是特别清楚。

ringa_lee

这个问题已经fix了, 现在改用npmconf 修改registry设置了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号