node.js:在新窗口中运行外部命令

我正在编写一个在后台永久运行并不时启动文件下载的node.js脚本。 我想用WGET来下载文件,因为它似乎更强大,直到我真的知道我在做什么node.js。

问题是,我想看看有关下载的进展。 但是我找不到通过node.js启动WGET的一种方法,即打开一个新的shell窗口并显示给WGET。

Node的exec和spawn函数在后台运行外部命令,并让我访问输出stream。 但是因为我的脚本在后台运行(隐藏),所以我不能用输出stream做很多事情。

我试着通过运行“cmd / c wget …”打开一个新的shell窗口,但没有任何区别。

有没有办法通过node.js在新窗口中运行外部命令行进程?

Solutions Collecting From Web of "node.js:在新窗口中运行外部命令"

您可以使用node-progress和Node的http客户端(或requesT)来执行此操作,不需要wget:

https://github.com/visionmedia/node-progress

例:

var ProgressBar = require('../') , https = require('https'); var req = https.request({ host: 'download.github.com' , port: 443 , path: '/visionmedia-node-jscoverage-0d4608a.zip' }); req.on('response', function(res){ var len = parseInt(res.headers['content-length'], 10); console.log(); var bar = new ProgressBar(' downloading [:bar] :percent :etas', { complete: '=' , incomplete: ' ' , width: 20 , total: len }); res.on('data', function(chunk){ bar.tick(chunk.length); }); res.on('end', function(){ console.log('\n'); }); }); req.end(); 

更新:

由于您想在后台进程中执行此操作,并监听下载过程(在单独的进程或您拥有的内容中),您可以使用pub-sub功能实现:

  • 使用像Redis,RabbitMQ或ZeroMQ的消息队列
  • 在已知的端口/ UNIX域上启动TCP服务器并收听

资源:

http://nodejs.org/api/net.html