2016-06-01 42 views
1

電子版本:1.2 操作系統:Windows無法訪問ASAR檔案中的文件在電子應用

能不能使用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文件。所以請幫我解決這個問題。

回答

4

我假設你的意思是說,一旦你打包你的應用程序,你的文件路徑不起作用。

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

這接近。你不需要「asar:」,你應該使用路徑模塊來讓你的生活更輕鬆。

嘗試使用path動態構建路徑。此外,您的主要入口點JS可能已經在應用程序文件夾中運行。嘗試是這樣的:

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

這將創建一個有效的,絕對路徑爲每個操作系統(在Windows路徑中使用\,而OSX和Linux使用/)。記住__dirname就是你當前的目錄,所以之後的所有內容都必須與它相關。

+0

是的,它現在工作。謝謝 –

+0

@srivignes記得接受這些答案之一,如果它幫助:) – ccnokes

+0

我接受這個答案 –

0

您應該爲路徑提供協議前綴。例如:「file:// [你的路徑在這裏]」。

+0

謝謝。它的工作原理:) –

相關問題