从节点脚本运行 MacOS 快捷方式 shell 命令

Mor*_*ann 5 macos terminal zsh node.js

我正在尝试通过 NodeJS 脚本运行 MacOS 快捷方式。shortcuts run shortcutname为了实现这一目标,我在 MacOS 快捷方式应用程序中创建了快捷方式,该应用程序通常通过键入( Docs ) 在终端 (ZSH) 中运行。直接在终端中输入它们时它们可以正常工作,但从 NodeJS 脚本调用时则不行。

我的脚本如下所示:


exec('shortcuts run shortcutname', (error, stdout, stderr) => {
    if (error) {
        console.log(`error: ${error.message}`);
        return;
    }
    if (stderr) {
        console.log(`stderr: ${stderr}`);
        return;
    }
    console.log(`stdout: ${stdout}`);
});
Run Code Online (Sandbox Code Playgroud)

从终端启动脚本时,node script.js它不执行任何操作。它不会返回任何内容,也不会完成。我尝试shortcuts run shortcutname用系统应该知道的其他命令替换该命令。例如ls,或git。他们都工作。另外,当我最后省略时shortcutname,它会抱怨缺少参数。

我怀疑缺少访问权限,但显然 NodeJS 以我的普通用户身份运行。在脚本上下文中运行whoami会返回我的用户名。

NODE_DEBUG=cluster,net,http,fs,tls,module,timers node script.js没有表现出任何异常。我还尝试使用二进制文件的完整路径。which shortcuts给我/usr/bin/shortcuts。我在我的脚本中使用了它/usr/bin/shortcuts run shortcutname

我缺少什么?提前致谢!

Mor*_*ann 2

虽然我以为我测试了它,但我找到了解决方案:\nexecSync而不是execworks

\n

exec如果有人能解释为什么\xe2\x80\x99不起作用,那\xe2\x80\x99d 会很酷。

\n

干杯!

\n