无GUI运行电子

时间:2017-12-24 01:59:17

标签: macos electron privileges

我看到这个问题has been asked,但问题的背景是不同的,所以没有答案与我的用例相关,所以我问了一个新问题

我有Electron based Web Server。它适用于初学Web开发人员,学生和不熟悉命令行的艺术家(是的,这是一个很大的辩论,但我被加州大学洛杉矶分校艺术与设计学院的老师责骂,要求他们的学生使用命令line,因此是一个带GUI的简单服务器。请不要讨论这一点。这不是问题的重点)

在任何情况下,使用此Web服务器的人有时希望在端口80上运行。在Mac(和Linux?)上,端口80需要管理员权限,所以我想升级服务器的权限来执行此操作。

我的理解是最容易(唯一?)的方法是生成另一个进程。由于我的web服务器的服务器部分是在node.js中有效编写的,并且因为node.js(或者至少是API)内置在Electron中,所以似乎最好的解决方案就是重新生成我的Electron应用程序来运行只有服务器部分。

换句话说,想象一下我可以像

一样运行应用程序
/Applications/Servez.app/Contents/MacOS/Servez --no-gui --server-only --port 80

然后我可以在Mac上使用一些spawn命令,如

/usr/bin/osascript -e '
do shell "/Applications/Servez.app/Contents/MacOS/Servez --no-gui --server-only --port 80" with administrator privileges
'

在运行服务器之前,macOS会要求管理员权限。

如果我无法在没有GUI的情况下运行Electron,那么我可以在Electron包中包含node.js的副本,但考虑到Electron内部已经具有相同的功能,这似乎是一个巨大的空间浪费。或者也许有其他解决方案? (我可以通过一些API调用来请求使用端口80的权限吗?)

1 个答案:

答案 0 :(得分:1)

设置环境变量ELECTRON_RUN_AS_NODE将运行Electron作为节点,因此我可以在生成Electron时设置该环境变量