#node.js #electron
#node.js #электронный
Вопрос:
В моем приложении electron / reactjs я пытаюсь открыть терминал и запустить некоторые команды.
Мой код выглядит следующим образом :
const terminal = 'x-terminal-emulator';
const { spawn } = require('child_process');
spawn(terminal);
Мой терминал открывается, но я не знаю, как запускать команды в этом терминале, например ‘cd / my / custom / path amp;amp; ls’
Кто-нибудь может мне помочь, пожалуйста? 🙂
Комментарии:
1. Вам не нужен никакой терминал для выполнения команд.
spawn('ls /my/custom/path');
2. Это выдает ошибку
Uncaught Error: spawn ls /home/test ENOENT at Process.ChildProcess._handle.onexit (internal/child_process.js:232) at onErrorNT (internal/child_process.js:407) at process._tickCallback (internal/process/next_tick.js:63)
3. То, что я хочу, больше похоже на выполнение ‘xterm -e «echo hi; bash»‘
4. Это была моя ошибка. Вам нужно передать аргументы для команды ls в массиве, подобном этому
spawn('ls', ['/my/custom/path]);
Смотрите документы nodejs.org/api /…5. Спасибо, у меня больше нет этой ошибки, но как можно поместить эту команду в терминал?
Ответ №1:
Node.js у child_process.spawn
команды есть опция, указывающая оболочку, которую вы хотите использовать.
Поэтому я бы использовал противоположную логику и запустил команду непосредственно в конкретной оболочке (например, bash):
const { spawn } = require('child_process');
const terminal = '/bin/bash';
let cmd = 'echo $SHELL';
spawn(cmd, { shell: terminal })
.stdout.on('data', (data) => {
console.log(`stdout: ${data}`); //-> stdout: /bin/bash
});