无法在电子应用程序中访问 asar 存档内的文件
Cannot access files inside asar archive in electron app
电子版:1.2
操作系统:Windows
无法使用 readFileSync 访问 asar 存档中的文件:
var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('asar:'+ __dirname + './app/data/sample.db');
I've also tried using
trial 1 : readFileSync('D:/Sample-App/app.asar/app/data/sample.db');
trial 2 : readFileSync('./app/data/sample.db');
trial 3 : process.noAsar= true;
readFileSync('./app/data/sample.db');
None 的试验成功了。如果我尝试不使用 app.asar,我能够访问 db 文件。所以请帮我解决这个问题。
您应该为路径提供协议前缀。例如:"file://[your path here]".
我假设你的意思是一旦你将你的应用程序打包到 asar,你的文件路径就不起作用了。
fs.readFileSync('asar:'+ __dirname + './app/data/sample.db')
这很接近。您不需要 "asar:",您应该使用路径模块让您的生活更轻松。
尝试使用 path
动态构建路径。此外,您的主要入口点 JS 可能已经 运行 在应用程序文件夹中。尝试这样的事情:
path.join(__dirname, '/data/sample.db');
这将为每个操作系统创建一个有效的绝对路径(Windows 中的路径使用 \ 而 OSX 和 Linux 使用 /)。请记住 __dirname
是您当前目录的任何内容,因此之后的所有内容都必须与它相关。
电子版:1.2 操作系统:Windows
无法使用 readFileSync 访问 asar 存档中的文件:
var fs = require('fs');
var SQL = require('sql.js');
var filebuffer = fs.readFileSync('asar:'+ __dirname + './app/data/sample.db');
I've also tried using
trial 1 : readFileSync('D:/Sample-App/app.asar/app/data/sample.db');
trial 2 : readFileSync('./app/data/sample.db');
trial 3 : process.noAsar= true;
readFileSync('./app/data/sample.db');
None 的试验成功了。如果我尝试不使用 app.asar,我能够访问 db 文件。所以请帮我解决这个问题。
您应该为路径提供协议前缀。例如:"file://[your path here]".
我假设你的意思是一旦你将你的应用程序打包到 asar,你的文件路径就不起作用了。
fs.readFileSync('asar:'+ __dirname + './app/data/sample.db')
这很接近。您不需要 "asar:",您应该使用路径模块让您的生活更轻松。
尝试使用 path
动态构建路径。此外,您的主要入口点 JS 可能已经 运行 在应用程序文件夹中。尝试这样的事情:
path.join(__dirname, '/data/sample.db');
这将为每个操作系统创建一个有效的绝对路径(Windows 中的路径使用 \ 而 OSX 和 Linux 使用 /)。请记住 __dirname
是您当前目录的任何内容,因此之后的所有内容都必须与它相关。