鍍金池/ 問答/HTML/ NodeJS的child_process模塊exec方法卡死是什么原因?

NodeJS的child_process模塊exec方法卡死是什么原因?

這么一段簡(jiǎn)單的代碼

const {exec} = require('child_process');

exec('npm -v', (err, res, reserr) => {
    console.log(err, res, reserr)
})

運(yùn)行起來就一直不輸出結(jié)果,如下
圖片描述

一直就這么卡著,誰知道這是什么原因?或者給點(diǎn)思路?

回答
編輯回答
澐染

忽忽悠悠就好了

話說是怎么好的,就是安裝cnpm的時(shí)候(別問我為啥是cnpm,我一頓操作試出來的-_-),淘寶官方給出的命令如下:

npm install -g cnpm --registry=https://registry.npm.taobao.org

看見那個(gè)網(wǎng)址了么?https開頭的那個(gè),我需要把https替換成http(而我之前一直都用的https的地址),也就是執(zhí)行如下命令:

npm install -g cnpm --registry=http://registry.npm.taobao.org

并且設(shè)置一下npm的registry也為上述地址

npm config set registry http://registry.npm.taobao.org

然后就好了。。。
后就好了。。。
就好了。。。
好了。。。
了。。。
。
好的不要不要的。。。
圖片描述


各位大佬可以告訴我這是為啥么?

2018年3月23日 05:11
編輯回答
兔寶寶

是你的主程序沒有退出,最后一行添加 process.exit()

const {exec} = require('child_process');

exec('npm -v', (err, res, reserr) => {
    console.log(err, res, reserr);
    process.exit();
})

參考nodejs官方api相關(guān)說明, 在windows下,你可能還需要嘗試把你要執(zhí)行的命令寫在.bat文件里,然后給執(zhí)行權(quán)限,比如寫在my.bat里,然后:

exec('my.bat', (err, stdout, stderr) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(stdout);
  process.exit();
});
2017年10月1日 20:51