Read/Write 并使用 JavaScript 将数据内部存储在本地应用程序(无服务器)中

Read/Write and store data internelly in a Local App (no server) with JavaScript

所以我正在使用 Javascript、React 和 Electron 制作本地应用程序,我希望它能够在没有互联网的情况下正常工作。

我无法使用“localStorage”,因为如果用户删除缓存,数据可能会被删除。

我尝试 reading/writing 使用不同的模块,其中 none 主要是因为 CROS。使用 XMLHTTPrequests 和 Ajax 也不起作用并且 运行 没时间了。

当我在测试服务器上使用它们时,它们 return 主页的 index.html (他们至少可以访问那个...但他们仍然无法读取数据)但是当我在构建中尝试它时,我得到 CORS 错误。

我现在的想法是在我的网页上启用 CORS,因为我不担心安全问题:该应用程序 运行 仅 离线 所以没有危险。 但是几个小时后...我没有找到在客户端执行此操作的解决方案。

如果有人有想法或建议,我将不胜感激。

我试过:fs、FileReader、FileSaver、$.ajax、XMLHTTPrequests

 //using $ajax
 var test = $.ajax({
        crossDomain:true,
        type: 'GET',
        url:'../data/DefaultCategorie.txt',
        contentType: 'text/plain',
        success: function(data){
            console.log(data);
        },
        error: function(){
            alert('failed');
        },

    })

 //using fs
 fs.readFile('../data/DefaultCategorie.txt', 'utf8', (err, data) => {
        if (err) {
            console.log("Failed");
            throw err
        }
        console.log(data);
        fs.close(data, (err) => {
          if (err) throw err;
        });
      });

本文介绍了 3 种最常见的用户数据存储方式:How to store user data in Electron

appDataElectron API 可以满足您的需求。非常好用。

来自以上文章:

const userDataPath = (electron.app || electron.remote.app).getPath('userData');
this.path = path.join(userDataPath, opts.configName + '.json')
this.data = parseDataFile(this.path, opts.defaults);   

function parseDataFile(filePath, defaults) {

  try {
    return JSON.parse(fs.readFileSync(filePath));
  } catch(error) {
    // if there was some kind of error, return the passed in defaults instead.
    return defaults;
  }
}

文档

app.getPath(name)

name String

Returns String - A path to a special directory or file associated with name. On failure, an Error is thrown.

You can request the following paths by the name:

appData - Per-user application data directory, which by default points to:
    %APPDATA% on Windows
    $XDG_CONFIG_HOME or ~/.config on Linux
    ~/Library/Application Support on macOS

userData - The directory for storing your app's configuration files,
which by default it is the appData directory appended with your app's
name.