Articles of spawn

在gruntfile中执行shell脚本并将结果赋值给variables

我正在使用grunt来pipe理一套摩卡运行testing。 摩卡testing套件中需要的一件事情是设置某些环境variables,以便根据运行testing的开发人员的环境正确执行testing。 其中一个环境variables在每个开发人员的机器上都会有不同的值,所以我们执行一个bash脚本来为我们设置的环境variables返回这个值。 我正在使用grunt.util.spawn来运行脚本并将其结果分配给在gruntfile中定义的variables,然后使用grunt-env设置具有该值的环境variables。 下面是我的gruntfile(在coffeescript中)的例子: module.exports = (grunt) -> envvar = '' grunt.initConfig pkg: grunt.file.readJSON('package.json') env: dev: ENV_VAR: envvar simplemocha: options: timeout: 30000 reporter: 'spec' compilers: 'coffee:coffee-script' all: src: ['Tests/**/*.coffee'] grunt.registerTask 'init', -> done = this.async command = cmd: './bin/get_envvar.sh' grunt.util.spawn command, (error, result, code) -> envvar = result console.log 'envvar: ' + envvar done […]

节点subprocess事件监听

我使用节点child_process API https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options var child = child_process.spawn(cmd, val, options); 从孩子我使用以下 child.stdout.pipe(process.stdout); child.stderr.pipe(process.stderr); 我可以在这些pipe道事件里面添加一些像console.log这样的代码吗? 例如可能与原型 child.on('error', function(err) { console.log(err); }); 更新 我需要的是听这个childProcess.stderr.pipe(process.stderr); 如果我得到和错误做process.exit(1) 当我尝试像我有错误的东西 child.stderr.pipe(function () { console.log("im here"); process.stderr; process.exit(1); } ); UPDATE2 我尝试以下 var child = child_process.spawn(cmd, value, opt); child.stdout.on('data', function (data) { console.log("IM HERE"); console.log('data' + data); }); child.stderr.on('data', function (data) { console.log("IM […]

child_process spawn()中的通配符?

我想在node.js中执行一个类似“doSomething ./myfiles/*.csv”的命令。 我想使用产卵而不是执行,因为它是某种观察过程,我需要标准输出。 我试过这个 var spawn = require('child_process').spawn; spawn("doSomething", ["./myfiles/*.csv"]); 但是,通配符* .csv不会被解释。 使用spawn()时不可能使用通配符吗? 还有其他的可能性来解决这个问题吗? 谢谢 托本

通过Grunt运行Node应用程序

我试图运行我的节点应用程序作为一个Grunt任务。 但是,我需要将其作为一个subprocess产生,以允许我并行运行watch任务。 这工作: grunt.registerTask('start', function () { grunt.util.spawn( { cmd: 'node' , args: ['app.js'] }) grunt.task.run('watch:app') }) 但是,当监视任务检测到更改时,这将再次触发启动任务。 在我生成Node应用程序的另一个subprocess之前,我需要杀死前一个进程。 但是,我不知道如何杀死这个过程。 像这样的东西不起作用: var child grunt.registerTask('start', function () { if (child) child.kill() child = grunt.util.spawn( { cmd: 'node' , args: ['app.js'] }) grunt.task.run('watch:app') }) 看起来: 尽pipe我将生成的进程存储在函数上下文之外的variables中,但它不会保留,所以下次启动任务运行时,child是undefined 。 child没有killfunction…

nodejs / express – streamstdout立即到客户端

我产生了下面的孩子: var spw = spawn('ping', ['-n','10', '127.0.0.1'])我想在客户端( 浏览器 ) 一个 ,而不是一个整体。 到目前为止,我试过这个: app.get('/path', function(req, res) { … spw.stdout.on('data', function (data) { var str = data.toString(); res.write(str + "\n"); }); … } 然后: … spw.stdout.pipe(res); … 在这两种情况下,浏览器等待10个ping完成,然后打印整个结果。 我想一个接一个,怎么做到的? (客户端正在调用…/path和console.logs结果) 编辑:虽然我确实认为,websockets是必要的,我只是想知道是否有任何其他的方式。 我看到了几个令人困惑的SO答案 ,博客post(在这篇文章中,在第一步OP把日志发送到浏览器),这没有帮助,所以我决定去寻求一些关注。

Grunt产生的进程不捕获输出

我已经使用Grunt产生了一个进程,但没有写入输出stream(例如console.log )的东西正在控制台中显示。 我想Grunt显示过程的任何输出。 grunt.util.spawn( { cmd: 'node' , args: ['app.js'] , opts: { stdio: [ process.stdin , process.stout , process.stderr ] } })

尝试构buildCordova应用程序(event.js:85)时获取“spawn cmd ENOENT”

当我尝试构build(模拟)Cordova应用程序时,在Windows cmd中获取此错误。 D:\dev\Cordova\toDoList>cordova build android Running command: D:\dev\Cordova\toDoList\platforms\android\cordova\build.bat events.js:85 throw er; // Unhandled 'error' event ^ Error: spawn cmd ENOENT at exports._errnoException (util.js:746:11) at Process.ChildProcess._handle.onexit (child_process.js:1046:32) at child_process.js:1137:20 at process._tickCallback (node.js:355:11) ERROR building one of the platforms: Error: D:\dev\Cordova\toDoList\platforms\android\cordova\build.bat: Command failed with exit code 1 You may not have the required environment or OS to […]

节点js从不同的进程获取和设置数据

我已经完成了产生(subprocess)的节点应用程序和应用程序,应用程序有主机和端口: var exec = require('child_process').spawn; var child = exec('start app'); console.log("Child Proc ID " + child.pid) child.stdout.on('data', function(data) { console.log('stdout: ' + data); }); child.stderr.on('data', function(data) { console.log('stdout: ' + data); }); child.on('close', function(code) { console.log('closing code: ' + code); }); 一些应用程序将立即开始,一些应用程序将需要一些时间10 – 20秒,直到他们开始 。 现在我使用节点http代理来运行应用程序,问题是,当使用希望在运行之前运行应用程序,我得到错误。 任何想法如何以某种方式我可以解决这个问题? proxy.on('error', function (err, req, res) { res.end('Cannot run […]

使用nodejs的spawn会导致“未知选项 – ”和“”错误

我尝试着spawn一个rm -rf node_modules然后是npm install (在windows 7上; n x命令由一个透明安装的CygWin提供,所有n个 x命令都可以在命令行上parsing)。 我最初使用exec ,但想要捕捉stdout / stderr信息,所以我想我会使用spawn ,并重写代码使用它。 然而,这打破了一切。 rm命令改写成这样: var spawn = require("child_process").spawn, child = spawn("rm", ["-rf", "node_modules"]); child.stdout.on('data', function (data) { console.log(data.toString()); }); child.stderr.on('data', function (data) { console.log(data.toString()); }); child.on('error', function() { console.log(arguments); }); 但是,运行这将产生以下错误: rm: unknown option — , Try `rm –help' for more information. npm命令改写成这样: […]