Electron - 分发构建中的文件路径问题
Electron - File path issue in distribution build
在 electron 和 React 中开发一个应用程序,在开发模式下一切正常,但在生产模式下,我遇到了路径问题。
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);
}
});
});
});
期待急需的帮助
谢谢
您是否尝试过使用 .getPath
这 API 可以让您明确地找到给定的路径名
在 electron 和 React 中开发一个应用程序,在开发模式下一切正常,但在生产模式下,我遇到了路径问题。
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);
}
});
});
});
期待急需的帮助
谢谢
您是否尝试过使用 .getPath
这 API 可以让您明确地找到给定的路径名