如何从 mac 上的 node.js 脚本启动电子应用程序?

Posted

技术标签:

【中文标题】如何从 mac 上的 node.js 脚本启动电子应用程序?【英文标题】:How to launch electron app from a node.js script on mac? 【发布时间】:2020-09-15 05:53:22 【问题描述】:

我有一个简单的电子应用程序,我想在多个平台上运行。我从 git hook 启动应用程序。我有多个平台特定的应用程序包发布到 npm。 Windows 路径运行良好。这是我的 windows commit-msg 挂钩脚本(运行我的电子应用程序 .exe,效果很好):

#!/usr/bin/env node

var child_process = require('child_process');
const cFile = process.argv[2];

child_process.exec(`"C:\\users\\myuser\\nodejs\\node_modules\\azure-devops-work-items-win\\dist\\win\\azure-devops-work-items.exe" --repoPath=C:\\\\project\\.git\\hooks --commitFile=$cFile`, (error, stdout, stderr) => 
    if (error !== null) 
        console.log(error);
        process.exit(1);
    
);

在 mac 上我安装了这个 git hook 脚本(它不起作用)。

#!/usr/bin/env node

var child_process = require('child_process');
const cFile = process.argv[2];

child_process.exec(`"/usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app" --repoPath=/Users/meeusen/appdev/.git/hooks --commitFile=$cFile`, (error, stdout, stderr) => 
    if (error !== null) 
        console.log(error);
        process.exit(1);
    
);

当 mac 钩子运行时,会出现以下错误消息:

MeeusenMacBookPro:appdev meeusen$ git commit . -m"."
Error: Command failed: "/usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app" --repoPath=/Users/meeusen/appdev/.git/hooks --commitFile=.git/COMMIT_EDITMSG
/bin/sh: /usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app: is a directory

    at ChildProcess.exithandler (child_process.js:303:12)
    at ChildProcess.emit (events.js:315:20)
    at maybeClose (internal/child_process.js:1021:16)
    at Socket.<anonymous> (internal/child_process.js:443:11)
    at Socket.emit (events.js:315:20)
    at Pipe.<anonymous> (net.js:674:12) 
  killed: false,
  code: 126,
  signal: null,
  cmd: '"/usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app" --repoPath=/Users/meeusen/appdev/.git/hooks --commitFile=.git/COMMIT_EDITMSG'

看起来我可能试图在 Mac 上错误地启动这个电子应用程序。我是一个 Windows 人,我不确定我是否以正确的方式去做这件事。我想要的是将我的应用程序与电子捆绑在一起,然后通过 nodejs 脚本启动特定于平台的二进制文件。我应该尝试启动 .app 文件吗?有没有更好的文件我应该尝试在 mac 上启动?

我正在使用electron-builder -mwl 打包我的电子应用程序。

我的仓库是here

【问题讨论】:

【参考方案1】:

您可以从命令行开始 *.appopen 喜欢:

open /usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app

如果您想使用命令行开关,您可以添加--args &lt;actual arguments&gt;,但它不会在 cli 中打印任何内容。由于您的脚本可能依赖于此,因此 .app 中有一个文件可以运行,它的行为更像是一个 unix 命令。在您的脚本中,它很可能看起来像:

/usr/local/lib/node_modules/azure-devops-work-items-mac/dist/mac/azure-devops-work-items.app/Contents/MacOS/azure-devops-work-items" --repoPath=/Users/meeusen/appdev/.git/hooks --commitFile=$cFile

【讨论】:

以上是关于如何从 mac 上的 node.js 脚本启动电子应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

启动 Node.js 控制台时如何运行脚本?

如何在 MobileFirst Foundation 8 中使用 REST API 从 Node.js 发送推送通知?

如何从主 node.js 脚本运行多个 node.js 脚本?

如何在 MAC 机器中从命令提示符启动 Appium 服务器?

在 Node.js 中发送电子邮件? [关闭]

如何直接运行Js文件?Mac Node.js安装使用教程