Michael
А кто-нибудь из здесь присутствующих собирал электрон самостоятельно? Я почти всё настроил и собрал, на пара файлов в CLion подсвечивается красным, что осложняет понимание всего кода
SKG
Aside the documentation, i need YouTube link, or paid videos, or ebooks or pdfs, any material you have on electron js please 🙏 send me , thank y’all
Andrey
Товарищи подскажите как прервать fetch запрос в electron. Пробую сделать паузу. Если вылетает ошибка, я могу докачивать с легкостью дальше, а вот прервать через abort не чего не дает.
const pauseDownload = () =>{
console.log('Активация паузы');
// Abort.
controller.abort()
}
Andrey
const download_fetch = async (url: string, filePath: string, signal) => {
setUIStatusDownload(statusDownload.download)
let file: number | undefined
const startTime = Date.now();
let prevDownloadedSize = 0
const listCookies = document.cookie.split(';').filter(cookie => cookie.startsWith('accessToken='))
const accessToken = listCookies.length ? listCookies[0].substring(12) : null
const headers: HeadersInit = accessToken ? { 'Authorization': Bearer ${accessToken} } : {}
url = url.replace('https://andrey.yuyux.xyz/', statics.host.api + '/api/v1/nexus/')
// Проверяем, существует ли файл с информацией о загрузке
if (fs.existsSync('resume_info.json')) {
const resumeInfo = fs.readFileSync('resume_info.json', 'utf8');
const { downloaded_size } = JSON.parse(resumeInfo);
saveResumeFrom(downloaded_size)
prevDownloadedSize = downloaded_size;
}
try {
setUIStatusDownload(statusDownload.pause)
const response = await fetch(url, {
method: 'GET',
headers: {
...headers,
'Range': bytes=${resumeFrom}-,
},
signal
})
// если resumeFrom больше нуля, то идет докачка
if (resumeFrom>0) {
file = fs.openSync(filePath, fs.constants.O_WRONLY | fs.constants.O_CREAT); // докачивание
} else {
file = fs.openSync(filePath, fs.constants.O_APPEND | fs.constants.O_TRUNC | fs.constants.O_CREAT);
}
// file = fs.writeSync(file, value)
const reader = response.body.getReader();
const total_size = Number(response.headers.get('Content-Length'));
let downloaded_size = 0
let speed = 0
let download_percent = 0
let remaining_time = -1
let elapsed_time = -1
console.log(Начато ${total_size})
while (true) {
const { done, value } = await reader.read();
if (done) {
onStateChange({
resumeFrom,
downloaded_size,
speed,
download_percent,
remaining_time,
elapsed_time,
}, true)
break;
}
const currentTime = Date.now();
downloaded_size += value.length;
const elapsedTime = (currentTime - startTime) / 1000; // Прошедшее время в секундах
const currentDownloadedSize = downloaded_size - prevDownloadedSize; // Текущий размер загруженных данных
speed = Math.fround(Number((currentDownloadedSize / elapsedTime))); // Скорость в байтах в секунду
download_percent = Math.floor((downloaded_size / total_size) * 100);
remaining_time = Math.floor((total_size - downloaded_size) / speed)
fs.writeFileSync(file, value)
onStateChange({
resumeFrom,
downloaded_size,
speed,
download_percent,
remaining_time,
elapsed_time,
}, false)
// console.log({
// downloaded_size,
// speed,
// download_percent,
// remaining_time,
// elapsed_time,
// })
}
}
catch (err) {
const relation = Date.now() - startTime
if (relation > 1000) {
controlDownload()
} else{
setUIStatusDownload(statusDownload.error)
console.error(err)
}
}
finally {
console.log('finaly');
if (file !== undefined && download_percent ==100) {
fs.closeSync(file)
console.log('finaly-end');
setUIStatusDownload(statusDownload.end)
}
}
};
Alexey
Всем привет, а не подскажите, как мне перед закрытием приложения, дать сигнал фронту что то сделать, дождаться, что он это сделает и затем уже закрыть окно?
Nikko
Подскажите, есть ли какие-то нюансы при работе на mac/linux/windows.
Насколько я понимаю главное что бы одинаковая версия ноды стояла, верно?
Bogaciuc
всем привет, может кто то подсказать, выходит ошибка при использовании serialport в проекте с electron-forge , electron, react, webpack
App threw an error during load
Error: No native build was found for platform=darwin arch=x64 runtime=electron abi=116 uv=1 libc=glibc node=18.15.0 electron=25.2.0 webpack=true
loaded from: /Users/mac/Documents/sonar/.webpack
🅰️nimeCoder
нативки это беда, я бы начал с создания пустого обычного проекта на ноде чтоб удостоверится что с этой версией ноды и версией serial port'a все ок
потом попробовать обычный проект на электроне без вебпака