#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. Я просто решил отключить экран в целом.
Редактировать: делайте это на свой страх и риск.