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?
Advertisement
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