2016-08-04 13 views
1

Mit einfachen Befehlen wie ls, pwd und sogar öffnen Sie eine externe Anwendung Ich habe Erfolg mit Kind-Prozess ausführen, aber wenn in einem eingebauten Elektronen App exec mit einem Docker Befehl, bekomme ich diesen Fehler:child_process kippt Docker Lauf

Hier
exec Error: Command failed: docker exec -it 6bec55e9e86e touch home.html 
the input device is not a TTY 

ist der Code:

var exec = require('child_process').exec; 

exec('docker exec -it 6bec55e9e86e touch casa.html', function (error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    console.log('stderr: ' + stderr); 
    if (error !== null) { 
    console.log('exec error: ' + error); 
    } 
}); 

Antwort

-1

Verwenden spawn und set options.stdio-inherit funktioniert:

const spawn = require('child_process').spawn; 
spawn('docker', ['exec', '-it', '6bec55e9e86e', 'touch', 'casa.html'], { stdio: 'inherit' }) 
+0

Ich habe es versucht. Ich hatte keinen Erfolg! – calebeaires

2

Bitte entfernen Sie -t Flagge. Daher sollte der Befehl docker exec -i 6bec55e9e86e touch casa.html lauten.

Dieser Fehler the input device is not a TTY bedeuten Eingabegerät kein Teletypes (Terminal), und in den Befehlen von Andockfensters, -t Flag-Symbole, ein terminal ist also sind sie Konflikt. entferne es einfach.