Electron 应用程序上 URL 命令行参数的Extrange问题

问题描述 投票:0回答:1

我发现,如果您使用命令行将 URL 参数传递给 Electron 应用程序,它必须是最后一个。如果不满足此条件,则 Electron 无法加载应用程序并向操作系统返回 -1。

请考虑以下 main.js 电子应用程序:

console.log('Starting..');
const electron = require('electron');
const process = require('process');
const app = electron.app;
console.log(process.argv);
console.log('Quitting..');
app.quit();

以及以下适用于 Windows 的 exec.cmd 文件:

call electron main.js %*
ECHO %ERRORLEVEL%

以下执行成功:

exec param1 param2 param3 https://google.com

它输出:

Starting..
[
  '<path to electron folder>\\electron.exe',
  'main.js',
  'param1',
  'param2',
  'param3',
  'https://google.com'
]
Quitting..
0

但是,无论您向 URL 参数添加另一个参数的任何组合都会失败。例如:

exec https://google.com param2

它仅输出 %ERRORLEVEL% 变量值:

-1

这是一个已知问题吗?

如何防止这种情况发生?

我使用的是 Windows 11,nodejs v20.13.1,电子 v11.5.0。

我尝试了其他电子版本,例如 v31.3.0,但问题仍然存在。

node.js electron
1个回答
0
投票

我不知道为什么当你传递一个 URL 参数后跟另一个参数时它会失败,但我找到了一种方法来防止它失败。

要使其正常工作,您需要将

--
作为
main.js
之后的第一个参数传递。

例如以下作品:

exec -- https://www.google.com anotherparameter

它输出:

Starting..
[
  '<path to electron folder>\\electron.exe',
  'main.js',
  '--',
  'https://www.google.com',
  'anotherparameter'
]
Quitting..
0
© www.soinside.com 2019 - 2024. All rights reserved.