How to run an electron app with arguments?












1














My app is electron with a BrowserWindow loading a local page index.html.

I call npm run start a script to run electron main.js , the app opens and the html loaded.

Can I add an argument to the script that will load different html file into the BrowserWindow ?



In the main.js file the code is :



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;
});
}









share|improve this question




















  • 1




    Is process.argv not populated?
    – Ben Fortune
    Sep 6 '16 at 12:30










  • Yes but how do I pass an argument of my, like -html=index2.html
    – Haddar Macdasi
    Sep 6 '16 at 14:00
















1














My app is electron with a BrowserWindow loading a local page index.html.

I call npm run start a script to run electron main.js , the app opens and the html loaded.

Can I add an argument to the script that will load different html file into the BrowserWindow ?



In the main.js file the code is :



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;
});
}









share|improve this question




















  • 1




    Is process.argv not populated?
    – Ben Fortune
    Sep 6 '16 at 12:30










  • Yes but how do I pass an argument of my, like -html=index2.html
    – Haddar Macdasi
    Sep 6 '16 at 14:00














1












1








1


1





My app is electron with a BrowserWindow loading a local page index.html.

I call npm run start a script to run electron main.js , the app opens and the html loaded.

Can I add an argument to the script that will load different html file into the BrowserWindow ?



In the main.js file the code is :



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;
});
}









share|improve this question















My app is electron with a BrowserWindow loading a local page index.html.

I call npm run start a script to run electron main.js , the app opens and the html loaded.

Can I add an argument to the script that will load different html file into the BrowserWindow ?



In the main.js file the code is :



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;
});
}






node.js npm electron






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 11 at 22:02









Mosh Feu

15.4k104881




15.4k104881










asked Sep 6 '16 at 12:26









Haddar Macdasi

1,85642749




1,85642749








  • 1




    Is process.argv not populated?
    – Ben Fortune
    Sep 6 '16 at 12:30










  • Yes but how do I pass an argument of my, like -html=index2.html
    – Haddar Macdasi
    Sep 6 '16 at 14:00














  • 1




    Is process.argv not populated?
    – Ben Fortune
    Sep 6 '16 at 12:30










  • Yes but how do I pass an argument of my, like -html=index2.html
    – Haddar Macdasi
    Sep 6 '16 at 14:00








1




1




Is process.argv not populated?
– Ben Fortune
Sep 6 '16 at 12:30




Is process.argv not populated?
– Ben Fortune
Sep 6 '16 at 12:30












Yes but how do I pass an argument of my, like -html=index2.html
– Haddar Macdasi
Sep 6 '16 at 14:00




Yes but how do I pass an argument of my, like -html=index2.html
– Haddar Macdasi
Sep 6 '16 at 14:00












1 Answer
1






active

oldest

votes


















3














The way of passing arguments will be same, the only thing you have to take care is path of electron. In package.json its written npm start will perform electron main.js. So you will have to execute this command explicitly and pass arguments with "proper path of electron" i.e ./node_modules/.bin/electron. Then the command will be



./node_modules/.bin/electron main.js argv1 argv2


and these arguments you can access by process.argv in main.js



and If wish you to access these parameters in your app then there are following things to do :



1.In your main.js define a variable like



     global.sharedObject = {prop1: process.argv}


2.In your app just include remote and use this sharedObject



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

console.log(arguments);


3.Output will be ["argv1", "argv2"]



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






share|improve this answer



















  • 1




    For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
    – Paula Fleck
    Oct 4 at 11:42











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f39349017%2fhow-to-run-an-electron-app-with-arguments%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









3














The way of passing arguments will be same, the only thing you have to take care is path of electron. In package.json its written npm start will perform electron main.js. So you will have to execute this command explicitly and pass arguments with "proper path of electron" i.e ./node_modules/.bin/electron. Then the command will be



./node_modules/.bin/electron main.js argv1 argv2


and these arguments you can access by process.argv in main.js



and If wish you to access these parameters in your app then there are following things to do :



1.In your main.js define a variable like



     global.sharedObject = {prop1: process.argv}


2.In your app just include remote and use this sharedObject



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

console.log(arguments);


3.Output will be ["argv1", "argv2"]



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






share|improve this answer



















  • 1




    For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
    – Paula Fleck
    Oct 4 at 11:42
















3














The way of passing arguments will be same, the only thing you have to take care is path of electron. In package.json its written npm start will perform electron main.js. So you will have to execute this command explicitly and pass arguments with "proper path of electron" i.e ./node_modules/.bin/electron. Then the command will be



./node_modules/.bin/electron main.js argv1 argv2


and these arguments you can access by process.argv in main.js



and If wish you to access these parameters in your app then there are following things to do :



1.In your main.js define a variable like



     global.sharedObject = {prop1: process.argv}


2.In your app just include remote and use this sharedObject



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

console.log(arguments);


3.Output will be ["argv1", "argv2"]



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






share|improve this answer



















  • 1




    For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
    – Paula Fleck
    Oct 4 at 11:42














3












3








3






The way of passing arguments will be same, the only thing you have to take care is path of electron. In package.json its written npm start will perform electron main.js. So you will have to execute this command explicitly and pass arguments with "proper path of electron" i.e ./node_modules/.bin/electron. Then the command will be



./node_modules/.bin/electron main.js argv1 argv2


and these arguments you can access by process.argv in main.js



and If wish you to access these parameters in your app then there are following things to do :



1.In your main.js define a variable like



     global.sharedObject = {prop1: process.argv}


2.In your app just include remote and use this sharedObject



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

console.log(arguments);


3.Output will be ["argv1", "argv2"]



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






share|improve this answer














The way of passing arguments will be same, the only thing you have to take care is path of electron. In package.json its written npm start will perform electron main.js. So you will have to execute this command explicitly and pass arguments with "proper path of electron" i.e ./node_modules/.bin/electron. Then the command will be



./node_modules/.bin/electron main.js argv1 argv2


and these arguments you can access by process.argv in main.js



and If wish you to access these parameters in your app then there are following things to do :



1.In your main.js define a variable like



     global.sharedObject = {prop1: process.argv}


2.In your app just include remote and use this sharedObject



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

console.log(arguments);


3.Output will be ["argv1", "argv2"]



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







share|improve this answer














share|improve this answer



share|improve this answer








edited Sep 13 '17 at 18:31

























answered Sep 13 '16 at 18:07









MaximeF

1,29232238




1,29232238








  • 1




    For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
    – Paula Fleck
    Oct 4 at 11:42














  • 1




    For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
    – Paula Fleck
    Oct 4 at 11:42








1




1




For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
– Paula Fleck
Oct 4 at 11:42




For some people who struggled with this, don't forget to set in your console: > set ELECTRON_ENABLE_LOGGING=true
– Paula Fleck
Oct 4 at 11:42


















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f39349017%2fhow-to-run-an-electron-app-with-arguments%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Full-time equivalent

さくらももこ

13 indicted, 8 arrested in Calif. drug cartel investigation