无法访问电子应用中的asar存档内的文件

时间:2016-06-01 04:42:29

标签: electron

电子版: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');

没有一项试验成功。如果我在不使用app.asar的情况下尝试,我就能够访问db文件。所以请帮我解决这个问题。

2 个答案:

答案 0 :(得分:8)

我假设您的意思是,一旦您将应用程序打包到asar,您的文件路径就不起作用了。

fs.readFileSync('asar:'+ __dirname + './app/data/sample.db')

这很接近。你不需要“asar:”,你应该使用路径模块让你的生活更轻松。

尝试使用path动态构建路径。您的主要入口点JS可能已经在app文件夹中运行。尝试这样的事情:

path.join(__dirname, '/data/sample.db');

这将为每个操作系统创建一个有效的绝对路径(Windows中的路径使用\,而OSX和Linux使用/)。请记住__dirname是您当前目录的任何内容,因此之后的所有内容都必须与之相关。

答案 1 :(得分:0)

您应该为路径提供协议前缀。例如:“file:// [这里的路径]”。