简体   繁体   中英

Passing arguments to execFile in node

I am trying to connect to browserstack using their binary and passing my key as an argument. if I do this in a terminal window:

./BrowserStackLocal --key ${BROWSERSTACK_KEY} 

Connection succeeds, my key is passed as expected. However I wish to run this binary via node using execFile. Below is my code

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

However when I run my function I get the following:

 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/ 

So it does not see my key. I have followed the guide here: https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback and I thought I was passing the argument in the correct manner, but I am obviously doing something wrong. Can someone help me out here? Thanks!

The array ['--key ${BROWSERSTACK_KEY}'] passes a single command-line argument containing a space to the process. To pass two command-line arguments (what it probably expects), use two strings:

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

I presume ${BROWSERSTACK_KEY} is just your placeholder in the question for the actual key...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM