【问题标题】:Electron - File path issue in distribution buildElectron - 分发版本中的文件路径问题
【发布时间】:2018-09-21 04:09:04
【问题描述】:

在电子和反应中开发应用程序,在开发模式下一切正常,但在生产模式下,我遇到了路径问题。

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);
            }
        });
    });
});

期待获得急需的帮助

谢谢

【问题讨论】:

    标签: windows reactjs electron fs electron-builder


    【解决方案1】:

    您是否尝试过使用.getPath

    此 API 可让您明确找到给定的路径名​​

    【讨论】:

    • 非常感谢您的回复,我没有尝试过。但我正在从路径的回调中获取文件位置。 "C:\Program Files\Electron App\resources\app.asar\images\Image01.png"
    • 但是当我明确尝试从上述路径获取文件时,没有这样的文件。
    • 您能否告诉我在本地系统中存储文件的理想位置。因为我试图创建一个文件夹,windows 抛出错误ERROR: EPERM, operation not permitted, mkdir
    • 嘿,谢谢你的回答我想通了,实际上,我将文件存储在错误的目录中。
    • 很高兴我能提供帮助,保重!
    猜你喜欢
    • 2017-02-21
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2010-11-07
    • 2012-03-04
    相关资源
    最近更新 更多