В настоящее время я работаю над Electron-App, использующим NPM, который распаковывает файл в выбранный каталог. Установщик в принципе. Теперь, когда я создаю приложение, оно все еще работает нормально. Я просто запускаю setup.exe в своей папке win-unpacked, и все идет гладко. Теперь, когда я перемещаю распакованную папку win в другой каталог, мое приложение работает нормально, но когда оно запускает процесс разархивирования, оно выдает следующую ошибку:
![enter image description here](https://i.stack.imgur.com/ZdKlf.png)
Я заметил, что первый отображаемый путь к файлу (по какой-то причине) не использует utf8, но все остальные отображаются правильно (должно быть ä). Также я уже попытался удалить папку node_modules, а затем запустить npm i, чтобы переустановить их. Все еще с той же проблемой.
Ниже приведен код, который запускает процесс распаковки:
const path = require('path');
const ipcRenderer = require('electron').ipcRenderer;
const Unzip = require('./unzip');
const os = require('os');
const fs = require('fs');
$('#information_next').click(function () {
var extractPath = $('#input_select').val();
let filepath;
const platform = os.platform();
const nodeName = platform == 'win32' ? 'wcd.node' : (platform == 'darwin' ? 'mcd.node' : 'lcd.node');
let customData = require("bindings")(nodeName);
let zip = h2a(customData.customData());
if(os.platform() == 'darwin') {
filepath = path.join(__dirname, '..', '..', '..', '..', 'ZIP.zip');
} else {
filepath = path.join(__dirname, '..', '..', 'ZIP.zip');
}
var xPath = path.join.apply(null, extractPath.split('\\'));
var unzip = new Unzip(filepath, xPath.toString());
unzip.extract(extractPath, zip, 100, (percentage) => {
// Code for Progressbar
finish = true;
setTimeout(function () {
$('.main_wrapper').addClass('hidden');
$('.main7').removeClass('hidden');
}, 1500);
}).catch((e) => {
$('.main6').addClass('hidden');
$('.main_install_error').prop('hidden', false);
});
});
Здесь я использую модуль bindings , чтобы запросить файл .node, который передает строку в мое приложение. И это, кажется, модуль, который вызывает ошибку.
Я пытался решить эту проблему в течение нескольких часов, но ничего, что я нашел в Интернете, не работает. Также я не смог найти никого, у кого была такая же ошибка, как у меня. Будем благодарны за любые предложения о том, как это исправить.
Поздравления
Matt.S
EDIT:
Возможно, я только что понял основную проблему. Модуль bindings содержит функцию, которая ищет корень модуля. Этот путь отображается в первой строке ОШИБКИ. Однако, поскольку это приложение уже создано, весь исходный код находится внутри файла app.asar. Кажется, что привязки не могут отличить файл .asar от обычной папки. Таким образом, даже если путь правильный, он не работает. Причина, по которой он работал в оригинальной распакованной win-версии, заключается в том, что привязки (если он не может найти корень модуля) перемещаются вверх по каталогу, пока не найдет корень. А поскольку исходная папка win-unpacked находится внутри моего проекта, в привязках каталогов используется не построенный модуль root.