6

我们正在使用electron-packager来捆绑和分发我们 Web 应用程序的前端。我们需要能够将服务器的host和传递port到电子前端进行连接。当我们通过electron main.js --host blah --port 8080它启动时。一旦它被打包,我们运行通过./MyApp --host blah --port 8080,它不起作用。这很糟糕,因为我们不希望客户需要自己安装 electron/npm。另外值得注意的是,无论我们是否将应用程序打包到asar存档中,都会发生这种情况。

关于我们可以尝试的事情的任何想法,或者我们是否试图以错误的方式解决这个问题?

4

2 回答 2

4

那么您如何尝试解析命令行?process.argv当你开始时看起来像什么./MyApp --host blah --port 8080

基本上,当您启动 Electron 时,它会在其资源文件夹中查找“app”、“app.asar”或“default_app”;当您启动您的应用程序时electron main.js --host blah --port,实际发生的是 Electron 的默认应用程序已启动,除其他外,它会解析您的命令行参数。当您打包您的应用程序时,它会以“app”或“app.asar”的形式复制到资源文件夹中,并在您稍后运行时直接启动MyApp。也就是说,您正在以两种根本不同的方式启动您的应用程序,这可能是您的问题的根源。

为了缓解这种情况,我喜欢在开发过程中将我的开发文件夹链接到 Electron 的资源文件夹;这样我可以绕过'default_app'并且无论应用程序是否打包都具有相同的执行路径。

话虽如此,无论您以哪种方式启动应用程序,您都应该能够解析命令行参数。作为参考,我只是在我的一个应用程序中使用 yargs 进行了设置,因此您绝对应该能够使其正常工作。

于 2016-01-12T11:22:54.637 回答
1

我建议您使用命令行参数管理系统,例如“minimist”。

您可以在 json 中使用它:"start": "electron . --srv=server.com --prt=112 --arg3=myarg3"

在您的 main.js 中,您可以使用它:

var args = require('minimist')(process.argv);

console.log(args)

您可以在主 javascript 文件中使用您的参数。

对于包,您可以在快捷方式中执行相同的操作,方法是添加myapp.exe --srv=server.com --prt=112 --arg3=myarg3

于 2017-10-27T15:29:40.217 回答