Tag: spawn

使用node.js spawn打开应用程序

我正在尝试使用node.js来执行一些可以在mac上运行并执行一些命令的应用程序。 我已经成功地使用了spawn来运行命令行,如xcodebuild,但是当我尝试打开iOS模拟器时xcrun似乎不工作。 我可以打开terminal键入: xcrun instruments -w 'iPhone 5s (9.2)' -t <template> 但是,如果我使用节点,并尝试使用像这样的产卵: var args = ['instruments', '-w', `iPhone 5s (9.2)`, '-t', 'noTemp']; var xcrun = spawn('xcrun', args); 所以这让我想,也许它有一些限制开放的应用程序? 我试图运行: var args = ['/Applications/Spotify.app']; var xcrun = spawn('open', args); 没有任何反应。 我找不到任何相关的东西。 我的问题是:有无论如何打开应用程序使用node.js产卵? 如果有,是否有人知道我的代码有什么问题? 这里是完整的代码,如果需要的话: var args = ['instruments', '-w', `${fullDevice}`, '-t', 'noTemp']; var xcrun = spawn('xcrun', […]

在AWS NodeJS Lambda函数中包含来自poppler的pdftotext

我正在使用节点模块pdf-to-text为我的Nodejs lambda函数,但我得到一个“ spawn pdftotext ENOENT ”错误。 我尝试启动AWS EC2实例并使用此脚本编译poppler。 我设法得到S3上的一个tar.gz文件,其中包含一个popplar文件,里面有一个bin和lib文件夹。 但是,当我参考poppler文件放在一个bin文件夹中,像这样: process.env['PATH'] = process.env['PATH'] + ':' + path.join(process.env['LAMBDA_TASK_ROOT'], '/bin/poppler'); 这没有用。 我有一个spawn ENOTDIR错误。 然后我解压缩它,并尝试引用文件内的bin文件夹:'bin / bin',但是我得到了一个spawn EACCES错误。 我试着直接引用“bin / pdftotext”,并再次得到了spawn ENOTDIR错误。 有没有人有任何运气把这个库的lambda函数? TL; DR,我想在我的lambda函数中运行命令spawn('pdftotext') 。 取得了一些进展,我在poppler文件夹上做了一个chmod,现在我得到这个错误: Error: pdf-text-extract command failed: pdftotext: error while loading shared libraries: libpoppler.so.56: cannot open shared object file: No such file or directory

来自NodeJS的Angular-Cli

当我直接从terminal窗口使用Angular-Cli构build我的项目时,这样工作: $ ng build 现在我想使用spawn从nodejs运行它。 然而, const spawn = require('child_process').spawn; const bld = spawn("ng build"); 抛出: child process has an error with code Error: spawn ng build ENOENT child process exited with code -2 为什么发生这种情况? (我正在运行从同一文件夹内的一切。)

遇到types错误与casperjs

当我执行casperjs时,它会抛出一个TypeError: #casperjs test.js child_process.js:936 var r = this._handle.spawn(options); ^ TypeError: Bad argument at ChildProcess.spawn (child_process.js:936:24) at exports.spawn (child_process.js:736:9) at Object.<anonymous> (/usr/local/lib/node_modules/phantomjs/bin/phantomjs:22:10) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:906:3 并没有test.js它抛出同样的错误: # casperjs child_process.js:936 var r = this._handle.spawn(options); ^ TypeError: Bad argument at ChildProcess.spawn […]

如何获得Node.JS中产生的child_process的输出?

首先,我是一个完整的noob,昨天开始使用Node.JS(这也是我第一次使用Linux在几年),所以请不错,明确 我目前正在做一个Node.JS程序,其中包括启动shell命令(主要是:挂载一个USB驱动器)。 我目前正在使用 var spawn = require('child_process').spawnSync; function shspawn(command) { spawn('sh', ['-c', command], { stdio: 'inherit' }); } shspawn('echo Hello world'); shspawn('mkdir newdir'); 等等,这对我来说是一个非常舒适的方式。 问题是,我想存储的输出,例如,一个“ls”命令在一个variables,像 var result = shspawn('ls -l') 我已经在网上阅读了一些例子,但很less使用产卵,当他们这样做时,它不适用于我(我想我可能做错了什么,但我又是一个在节点noob) 如果你们有比使用child_process_spawnSync更好的主意,我打开任何想法,但我希望尽可能长时间保持我的程序包免费:) 编辑:我需要它同步工作! 这就是为什么我开始使用spawnSync。 我将使用一些像dd这样的命令,这需要时间,并且在程序移动到另一个命令之前需要完全完成。

包含在可返回的生成器中的nodejs child_process.spawnSync或child_process.spawn返回输出

因为有一段时间我正在努力达到目前为止还没有解决的问题。 使用nodejs,我喜欢在命令退出后运行交互式sh命令并使用sh命令输出。 我喜欢编写一个可收缩的generator函数来封装交互式shell命令的运行并返回shell命令的输出。 方法1:shelljs shelljs 我用shelljs取得了一些成功,但是在某些时候它不会跑得更远。 问题1:是否有可能获得shelljs到我可以inheritancestdio并使shelljs函数可屈服的点? 方法2:child_process.spawnSync child_process.spawnSync 最后我发现了child_process.spawnSync并很高兴,至less我可以运行交互式sh命令而不会出现任何问题options: { stdio: 'inherit' } 但我还没有find如何取回child_process.spawnSync的输出。 问题2:如何将spawnSync封装到返回child_process输出的生成器函数中? 方法3:共同子女过程 我也试过共同子女的过程 。 它似乎运行,但不与stdio互动。 有这个问题 ,我真的不明白。 问题3:有人可以解释我/发表一个例子如何共同subprocess将与stdioinheritance工作。 方法4:用蓝鸟promisify child_process.spawn() 我打开蓝鸟的问题 ,如果child_process.spawn()是promisifiable 所以我的问题。 有人可以给我一个例子,说明如何运行一个交互式shell命令,该命令可以封装在一个返回shell命令输出的可生成生成器函数中? 我很乐意接受新的方法。 我创build了一个在github上可用的npm模块,你可以将它分叉并贡献。 thx提前。

在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…