Как выполнить команды cmd в nodeJS? - PullRequest
0 голосов
/ 29 марта 2020

Я действительно новичок в NodeJS и играю с некоторыми функциями. Я хочу использовать некоторые команды из cmd, используя Node. Моя попытка была здесь:

const execSync = require('child_process').execSync;
code = execSync('node -v');
console.log(code);

Но вместо того, чтобы получить однострочник, я получаю целый объект ChildProcess, подобный этому:

ChildProcess {
    _events: [Object: null prototype] {
    close: [Function: exithandler],
    error: [Function: errorhandler]
  },
  _eventsCount: 2,.....and so on

Кто-нибудь может мне помочь, пожалуйста? Почему это так и как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 30 марта 2020

Просто используйте дополнительные .toString()

execSync('node -v').toString()

Тип, возвращаемый 'child_process', равен Buffer, вам нужна строка.

Помните, что все выполняемые команды заканчивается символом новой строки \n.

Полный код

const execSync = require('child_process').execSync;
const code = execSync('node -v').toString;
console.log(code);

даст вам что-то вроде

'v10.15.1\n'

в зависимости от версии узла, которую вы в данный момент используете.

1 голос
/ 30 марта 2020

По умолчанию stdout отправляется в родительский процесс. Вы можете установить options.stdio, если хотите, чтобы go в другом месте.

const { execSync } = require('child_process');
const code = execSync('node -v', { stdio: 'inherit' });

console.log(code);
0 голосов
/ 30 марта 2020

Выполнять вещи в Node просто не так просто, но есть модуль, который может сделать это проще. Взгляните на shell js .exe c:

const version = exec('node --version', {silent:true}).stdout;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...