Electron - проблема пути к файлу в сборке дистрибутива

Разрабатываю приложение в электронном виде и реагирую, все работает нормально в режиме разработки, но в производственном режиме у меня проблема с путями.

Windows - v 10 Электрон - v1.8.9 Реагировать - v16.3

Когда приложение открывается, возникает событие для загрузки данных с сервера в локальную систему для отображения в автономном режиме.

В режиме разработки с Интернетом пути к файлам, как показано ниже

"D:\Workspace\Electron App\images\image01.jpg"
"D:\Workspace\Electron App\images\image02.jpg"
"D:\Workspace\Electron App\images\image03.jpg"

В режиме распространения без Интернета пути к файлам выглядят так

"C:\Program Files\Electron App\resources\app.asar\images\.eslintignore"
"C:\Program Files\Electron App\resources\app.asar\images\app"
"C:\Program Files\Electron App\resources\app.asar\images\app.js"
"C:\Program Files\Electron App\resources\app.asar\images\node_modules"

Сверху URL-адрес app.asar - это файл, а не папка, и я не могу найти загруженные файлы, и я не уверен, почему URL-адрес имеет .eslintignore - app - app.js

Вот мой код для загрузки файлов

const downloadFile = (configuration) => {
    const { remoteFile, localFile } = configuration;

    return new Promise((resolve, reject) => {
        const req = request({
            method: 'GET',
            uri: remoteFile,
        });

        const out = fs.createWriteStream(localFile);
        req.pipe(out);

        req.on('end', () => resolve());

        req.on('error', () => reject());
    });
};

ipcMain.on(STORE_DATA, (event, data) => {
    const storedPaths = [];
    const dataLength = data.length;
    const storingPath = path.join(__dirname, '/images/');

    data.map((remoteFileSource) => {
        const filename = remoteFileSource.url.split('/').pop().split('#')[0].split('?')[0];

        downloadFile({
            remoteFile: remoteFileSource.url,
            localFile: storingPath + filename,
        }).then(() => {
            const storedData = {
                url: storingPath + filename,
            };
            storedPaths.push(storedData);

            // Send paths to local files
            if (dataLength === storedPaths.length) {
                mainWindow.send(STORED_DATA, storedPaths);
            }
        });
    });
});

С нетерпением жду столь необходимой помощи

Спасибо

1
0
2 764
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пробовали использовать .getPath

Этот API позволяет вам явно найти заданное имя пути

Большое спасибо за ваш ответ, я не пробовал. но я получаю расположение файлов в обратном вызове из пути. "C:\Program Files\Electron App\resources\app.asar\images\Image01.png"

Mr Robot 11.04.2018 15:46

но когда я явно пытался получить файлы по указанному выше пути, такого файла нет.

Mr Robot 11.04.2018 15:49

Подскажите, пожалуйста, где лучше всего хранить файл в локальной системе. поскольку я пытался создать папку, windows выдает ошибку ERROR: EPERM, operation not permitted, mkdir

Mr Robot 11.04.2018 15:50

Привет, спасибо за ответ. Я понял это, на самом деле, я хранил файлы в неправильном каталоге.

Mr Robot 11.04.2018 16:26

Рад, что смог помочь, берегите себя!

Lior G 12.04.2018 08:11

Другие вопросы по теме