【问题标题】:Cannot access files inside asar archive in electron app无法在电子应用程序中访问 asar 存档中的文件
【发布时间】:2016-06-01 04:42:29
【问题描述】:

电子版: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 文件。所以请帮我解决这个问题。

【问题讨论】:

    标签: electron


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • @srivignes 如果有帮助,记得接受这些答案之一:)
    • @srivignes 要接受 stackoverflow 上的答案,您必须单击答案左侧的灰色复选标记图标。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-10-13
      • 2021-06-01
      • 2016-07-29
      • 2017-01-21
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      相关资源
      最近更新 更多