Javascript 将参数传递给打包的应用程序

Javascript 将参数传递给打包的应用程序,javascript,node.js,electron,atom-editor,yargs,Javascript,Node.js,Electron,Atom Editor,Yargs,我们使用它来捆绑和分发web应用程序的前端。我们需要能够将服务器的主机和端口传递到电子前端进行连接。当我们通过electron main.js--host blah--port 8080启动时,它会工作。打包后,我们通过/MyApp--host blah--port 8080运行,但它不工作。这很糟糕,因为我们不希望客户需要自行安装electron/npm。另外值得注意的是,无论我们是否将应用程序打包到asar存档中,都会发生这种情况 关于我们可以尝试的事情,或者如果我们试图以错误的方式进行,有

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


关于我们可以尝试的事情,或者如果我们试图以错误的方式进行,有什么想法吗?

那么您是如何解析命令行的呢?当您从
/MyApp--host blah--port 8080开始时,
process.argv
是什么样子的

基本上,当您为“app”、“app.asar”或“default_app”启动Electron时;当您使用
electron main.js--host blah--port启动应用程序时,实际发生的是启动了electron的默认应用程序,其中包括。打包应用程序时,它将作为“app”或“app.asar”复制到资源文件夹中,并将在以后运行
MyApp
时直接启动。也就是说,你以两种根本不同的方式启动你的应用程序,这可能是你问题的根源

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


话虽如此,无论您以何种方式启动应用程序,您都应该能够解析命令行参数。作为参考,在我的一个应用程序中使用yargs,因此您肯定能够使其工作。

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

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

在main.js中,您可以使用以下内容:

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

console.log(args)
您可以在主javascript文件中使用args


对于包,您可以做同样的事情,但在快捷方式中,添加
myapp.exe--srv=server.com--prt=112--arg3=myarg3

为什么不将配置文件与应用程序打包?我想服务器IP和端口不会经常更改。这帮助我正确地进行了操作(以及您的代码,谢谢!)。它是
use.parse(process.argv.slice(1))而不是.argv,第一个参数不会被忽略。
from。一旦我做到了这一点,即使是我打包的应用程序也能够获得参数。谢谢