Передача аргументов в execFile в узле - PullRequest
0 голосов
/ 30 апреля 2018

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

./BrowserStackLocal --key ${BROWSERSTACK_KEY} 

Соединение установлено успешно, мой ключ передан, как и ожидалось. Однако я хочу запустить этот двоичный файл через узел, используя execFile. Ниже мой код

const { execFile } = require('child_process');
function getConnection() {
    execFile('./BrowserStackLocal', ['--key ${BROWSERSTACK_KEY}'], (err, stdout, stderr)  => {
        if (err) {
            console.log(err);
        } else
            console.log(stdout);
    });
}

Однако, когда я запускаю свою функцию, я получаю следующее:

BrowserStackLocal v7.1

 *** Error: Atleast one argument is required!

To test an internal server, run:
./BrowserStackLocal --key <KEY>
Example:
./BrowserStackLocal --key DsVSdoJPBi2z44sbGFx1

To test HTML files, run:
./BrowserStackLocal --key <KEY> --folder <full path to local folder>
Example:
./BrowserStackLocal --key DsVSdoJPBi2z44sbGFx1 --folder /Applications/MAMP/htdocs/example/

Так что он не видит мой ключ. Я следовал руководству здесь: https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback и думал, что передаю аргумент правильно, но я явно что-то делаю не так. Может ли кто-нибудь помочь мне здесь? Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Массив ['--key ${BROWSERSTACK_KEY}'] передает в процесс single аргумент командной строки, содержащий пробел. Чтобы передать два аргумента командной строки (что он, вероятно, ожидает), используйте две строки:

execFile('./BrowserStackLocal', ['--key', '${BROWSERSTACK_KEY}'], ...

Полагаю, ${BROWSERSTACK_KEY} является лишь вашим заполнителем в вопросе о фактическом ключе ...

...