Open salehmosleh opened 7 years ago
@salehmosleh any news?
@WellMafra , we have to run electron-dl codes on Main side (main.js), if you need run it on render side , use ipcMain/IPCRenderer to send request to Main side.
const {app, BrowserWindow, ipcMain} = require('electron');
const {download} = require('electron-dl');
ipcMain.on('download-btn', (e, args) => {
download(BrowserWindow.getFocusedWindow(), args.url)
.then(dl => console.log(dl.getSavePath()))
.catch(console.error);
});
also i want to use electron-download-manager
, it is better for me.
Any news on how to solve this ? @salehmosleh
@pedrobertao , i explain it on the above.
Just to clarify for anyone in the future: you CAN NOT use electron-dl
functions from your preload script. You must declare the download function in your main file and communicate between main.js
and preload.js
by using ipcMain
and ipcRenderer
.
This is what worked for me:
// main.js
const electronDl = require('electron-dl');
electronDl();
app.on('ready', () => {
ipcMain.on('electron-dl-download', async (event, { url }) => {
const win = BrowserWindow.getFocusedWindow();
try {
console.log(await electronDl.download(win, url));
} catch (error) {
if (error instanceof electronDl.CancelError) {
console.info('item.cancel() was called');
} else {
console.error(error);
}
}
});
});
// preload.js
const { ipcRenderer } = require('electron');
window.download = (args) => {
ipcRenderer.send("electron-dl-download", args);
};
i use below codes :
but i get this error in consol :
how can i fix it ?