首页 > 解决方案 > 将参数传递给节点中的 execFile

问题描述

我正在尝试使用他们的二进制文件连接到 browserstack 并将我的密钥作为参数传递。如果我在终端窗口中执行此操作:

./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我以为我以正确的方式传递了参数,但我显然做错了。有人可以帮我吗?谢谢!

标签: javascriptnode.jsbrowserstack

解决方案


该数组['--key ${BROWSERSTACK_KEY}']将一个包含空格的命令行参数传递给进程。要传递两个命令行参数(它可能期望的),请使用两个字符串:

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

我想${BROWSERSTACK_KEY}这只是您在实际密钥问题中的占位符......


推荐阅读