Что за ограничение на объём передаваемых данных в Electron через ipcRenderer?

Столкнулся с зависанием приложения на Electron, когда стал передавать через ipcRenderer массив размером 1,5Мбайт. Приложение просто клинится. Дебаг в Visual Studio Code залипает. Никакого исключения не выбрасывается.

Перечитал документацию на ipcMain, ipcRenderer, EventEmitter, - нигде нет ничего про ограничение. Гугление не помогло. Это баг, или где-то всё таки написано про ограничение?

-----

Видимо придётся резать массив на куски и пихать их поотдельности, но и тогда суммарный размер "пакета" будет разниться от раза к разу, плюс всё это оборачивается самим ipcRenderer-ом в JSON-строку с непредсказуемой конечной длиной.

UPD.
После аналогичной проблемы с массивами провёл тесты. Как видно, переполнение стека возникает не от общего объёма данных, а от их количества.

// количество элементов, размер элемента
function test(itemsCount, itemSize) {
	const str = '1'.repeat(itemSize)

	let arr2 = []

	let i = itemsCount
	while (i--) {
		arr2.push(str)
	}

	let arr1 = []
	Array.prototype.push.apply(arr1, arr2)
}

// test(1000000000, 100)	// 100.000.000.000 - 1 млрд * 100 - просто закрывается без ошибки
// test(100000000, 100)		//   10.000.000.000 - 100 млн * 100 - зависает, потом просто закрывается без ошибки
// test(10000000, 100)		//     1.000.000.000 - 10 млн * 100 - вылетает окно о переполнении стека
// test(1000000, 100)		//        100.000.000 - 1 млн * 100 - вылетает окно о переполнении стека
// test(100000, 100)		//          10.000.000 - 100 тыс * 100 - ok
// test(10000, 1000)		//          10.000.000 - 10 тыс * 1000 - ok
// test(100000, 1000)		//        100.000.000 - 100 тыс * 1000 - ok !
// test(100000, 10000)		//     1.000.000.000 - 100 тыс * 10.000 - ok !
// test(100000, 100000)		//   10.000.000.000 - 100 тыс * 100.000 - ok !
// test(100000, 1000000)	// 100.000.000.000 - 100 тыс * 1.000.000 - ok !
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 1
dummyman
@dummyman
диссидент-схизматик
Не знаю, никаких ограничений быть не должно.
Попробуйте запустить без отладчика.
Если не помогает, установите export NODE_ENV=production.
Может быть, неполностью, но морозить должно раз в 5-10 поменьше.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы