Как запустить приложение golang в интерактивном режиме - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь запустить приложение golang в интерактивном режиме (чтобы оно запрашивало у пользователей необходимую информацию) из nodejs, например:

childprocess.execFileSync(pulumiExecutable, ["stack", "select"], { encoding: "utf-8", shell: true, stdio: "inherit" });

Однако оно использует эта функция для автоматического отключения интерактивного режима, если он думает, что он не запускается с терминала. Предположительно, потому что IsTerminal () возвращает false.

Учитывая, что я говорю nodejs наследовать потоки ввода-вывода от родительского процесса, мне интересно, что еще я могу попытаться сделать, чтобы оставаться в интерактивном режиме при вызове пулуми изнутри nodejs.

1 Ответ

1 голос
/ 27 мая 2020

Оказывается, было две причины, по которым он не работал в интерактивном режиме:

  1. Запуск программы nodejs в качестве конфигурации запуска WebStorm делает ее не интерактивной.
  2. Запуск дочернего процесса в режиме оболочки также делает его не интерактивным.

Это работает, когда программа nodejs запускается с терминала:

childprocess.execFileSync(pulumiExecutable, ["stack", "select"], { encoding: "utf-8", stdio: "inherit" });
...