我发现,如果您使用命令行将 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,但问题仍然存在。
我不知道为什么当你传递一个 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