使用像ls,pwd这样的简单命令甚至打开外部应用程序我使用子进程成功,但在内置电子应用程序中使用exec和docker命令时,我收到此错误:
exec Error: Command failed: docker exec -it 6bec55e9e86e touch home.html
the input device is not a TTY
以下是代码:
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);
}
});
答案 0 :(得分:3)
请删除-t
标记。所以你的命令应该是docker exec -i 6bec55e9e86e touch casa.html
。
此错误the input device is not a TTY
表示您的输入设备不是Teletypes(终端),并且在docker的命令中,-t
标志符号为terminal
,因此它们是冲突的。所以只需删除它。
答案 1 :(得分:-1)
使用spawn
并将options.stdio
设为inherit
即可:
const spawn = require('child_process').spawn;
spawn('docker', ['exec', '-it', '6bec55e9e86e', 'touch', 'casa.html'], { stdio: 'inherit' })