Edgar Martinez Edgar Martinez - 1 month ago 19
Javascript Question

Requiring electron dialog from render process is undefined

I am using electron and am trying to open a file browser when a user clicks on button. From the render process I am trying to include the elctron.dialog package like this.

const dialog = require( 'electron' ).dialog;

console.log( dialog );


However the result from the console log is
undefined


I am absolutely sure I am in the rendering process so I am not sure why this is not working. The documentation suggests that this is the correct way of doing things but it appears to not be working.

This is my
package.json
file

{
"name": "my-app",
"version": "0.1.0",
"main": "./main.js",
"scripts": {
"start": "electron ."
},
"dependencies": {
"electron": "^0.4.1"
}
}


This is my
main.js
file

'use strict';

var app = require( 'app' );
var BrowserWindow = require( 'browser-window' );
var ipc = require( 'ipc' );

var mainWindow = null;

app.on(
'ready', function () {
mainWindow = new BrowserWindow(
{
frame : true,
height: 700,
width : 500
}
);

mainWindow.loadUrl( 'file://' + __dirname + '/app/index.html' );

mainWindow.openDevTools();
mainWindow.on(
'closed', function () {
mainWindow = null;
}
);

}
);

ipc.on(
'close-main-window', function () {
app.quit();
}
);


this is the rendered process file

// Add your index.js code in this file
var ipc = require( 'ipc' );

const dialog = require( 'electron' ).dialog;

console.log( dialog );


This is the console



Is this incorrect?

Answer

After a few hours of looking into it someone else pointed out to me that the "new" way (4/15/16) of doing this is the following.

var remote = require('remote');
var dialog = remote.require('dialog');

dialog.showOpenDialog({ 
  properties: [ 'openFile' ] }, function ( filename ) {
    console.log( filename.toString() );
  }
);

You must require remote and then from remote require dialog. It looks like you no longer need to require electron

Comments