Запрос пароля не возвращается в стандартный вывод при запуске сценария с помощью childjs 'child_process.spwan (..) - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь создать утилиту, которая будет сдавливать миграцию. Если я предоставлю пароль для файла конфигурации flyway (чтобы подсказка не появлялась), тогда процесс будет работать, как и ожидалось, в случае, если запрос для команды flyway должен быть сгенерирован (что будет состоит из текста "Database password:"), затем ничего не генерируется и генерируется ошибка при попытке подключения без пароля.

const child_process = require("child_process");
const os = require("os");

.
.
.

//Problem code below

let flywayMigrate = function(dbpassword){
  return new Promise(function(){
    let child = child_process.spawn(                              
      "./flyway",                                      
      ["migrate"],                                     
      {                                                
        cwd : "/home/admin/flyway"                     
      }
    );
    child.stdout.on("data", function(data){
      let out = data.toString();
      console.log(out);
      //containsString(haystack, needle) being a utility method
      if(containsString(out, "Database password:")){
        child.stdin.write(dbpassword);
        child.stdin.write(os.EOL);
      }
    });
    child.stderr.on("data",function(data){
      console.log(data.toString());
      reject();
    });
    child.on("exit", function(){
      console.log("child process finished");
      resolve();
    });
  });
}

Кто-нибудь знает, что случилось?

...