Как использовать electron-dl

#javascript #electron

#javascript #electron

Вопрос:

Я пытаюсь заставить пакет electron-dl работать. Для этого я использую стандартный пример проекта electron-quick-start.

К сожалению, применение кода примера из electron-dl к примеру electon-quick-start у меня не работает, что означает, что ничего не происходит и никаких ошибок в консоли браузера или терминале.

Вот как я реализовал минимальный пример:

main.js

 const {app, BrowserWindow, ipcMain} = require('electron')
const {download} = require('electron-dl');

let mainWindow

ipcMain.on('download-item', async (event, {url}) => {
  event.sender.send('download-success', url)
  console.log(url)
  const win = BrowserWindow.getFocusedWindow();
  console.log(await download(win, url));
});
// ...
  

renderer.js

 const { ipcRenderer } = require('electron')

$('#btn-dl').click(() => {
    const newURL = "http://ipv4.download.thinkbroadband.com/5MB.zip"
    ipcRenderer.send('download-item', {url: newURL}) 
})

ipcRenderer.on('download-success', (event, arg) => {
    console.log(arg)
})
  

index.html

 <h1>Hello World!</h1>
<button id="btn-dl">Download</button>

<script>
// jQuery
$ = require('jquery')
// You can also require other files to run in this process
require('./renderer.js')
</script>
  

В этой реализации я просто пытаюсь загрузить файл 5MB.zip при нажатии кнопки загрузки.

Что я делаю не так?

Не мог бы кто-нибудь, пожалуйста, привести простой рабочий пример внедрения electron-dl с использованием примера electron-quick-start?

Спасибо за вашу помощь!

Комментарии:

1. Регистрирует ли он URL-адрес загрузки в вашем main.js ?

2. Нет, console.log(url) ничего не отображается

3. Будет ли элемент управления btn-dl использовать обработчик щелчков?

Ответ №1:

Воссоздав именно то, что вы описали, для меня это работает безупречно.

На консоль выводится следующее:

 http://ipv4.download.thinkbroadband.com/5MB.zip
DownloadItem {
  _events: { updated: [Function], done: [Function] },
  _eventsCount: 2 }
  

Пакет сам определяет местоположение для хранения файла, если вы его не укажете. Вы можете вывести путь, который он выбирает по умолчанию, используя app.getPath('downloads') . Для меня это мой домашний каталог (Linux).

Если вы хотите самостоятельно установить каталог загрузки:

 download(win, url, {
    directory: "/path/to/my/directory/"
})
  

Пакет будет создавать каталоги по мере необходимости.

Комментарии:

1. Это безумие, я перезапустил свой компьютер, и он заработал. Я думаю, должно быть, что-то не так с функцией перезагрузки.

Ответ №2:

Я просто хотел бы добавить, я потратил пару дней на то, чтобы разобраться с этой проблемой. Я столкнулся с тем же самым в своем проекте. Отключив мои антивирусные экраны, он перестал прерывать загрузку. Убедитесь, что вы сделали исключение для своего проекта / любых процессов кода Visual Studio. Я просто решил отключить экран в целом.

Редактировать: делайте это на свой страх и риск.