如何使用参数运行电子应用程序?

Had*_*asi 3 node.js npm electron

我的应用程序是电子,BrowserWindow加载本地页面 index.html。
我调用npm run start一个脚本来运行electron main.js,应用程序打开并加载 html。
我可以向脚本添加一个参数来将不同的 html 文件加载到BrowserWindow.

在 main.js 文件中,代码是:

function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({
    webPreferences:{
      webSecurity:false
    },
    fullscreen : false });//, alwaysOnTop : true , kiosk : true })
  mainWindow.setMenu(null);
  // and load the index.html of the app.
  let url = `file://${__dirname}/index.html`; \\ index.html should be determined by argument passed at start.  
  mainWindow.loadURL(url,loadOptions);

  // Open the DevTools.
  mainWindow.webContents.openDevTools();

  // Emitted when the window is closed.
  mainWindow.on('closed', function () {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null;
  });
}
Run Code Online (Sandbox Code Playgroud)

Ali*_*aza 6

将命令行参数传递给电子应用程序:

./node_modules/.bin/electron main.js --arg1=value --arg2=value
Run Code Online (Sandbox Code Playgroud)

它可以在main.js 中像这样检索:

import { app } from "electron";
app.commandLine.getSwitchValue("arg1");
app.commandLine.getSwitchValue("arg2");
Run Code Online (Sandbox Code Playgroud)


Max*_*meF 4

传递参数的方式是相同的,你唯一需要注意的是电子的路径。在package.json其书面npm开始将执行electron main.js。因此,您必须显式执行此命令并使用“电子的正确路径”传递参数,即./node_modules/.bin/electron。那么命令将是

./node_modules/.bin/electron main.js argv1 argv2
Run Code Online (Sandbox Code Playgroud)

您可以通过process.argv以下方式访问这些参数main.js

如果希望您在应用程序中访问这些参数,则需要执行以下操作:

1.在你的main.js中定义一个变量,例如

     global.sharedObject = {prop1: process.argv}
Run Code Online (Sandbox Code Playgroud)

2.在您的应用程序中只需包含遥控器并使用它sharedObject

    var remote = require('electron').remote,
      arguments = remote.getGlobal('sharedObject').prop1;

    console.log(arguments);
Run Code Online (Sandbox Code Playgroud)

3.输出将是["argv1", "argv2"]

来源:https ://discuss.atom.io/t/how-to-pass-command-arguments-in-electron/17247