电子写入 json 文件在 dev 中工作但不在 dist 中工作

Che*_*erd 0 json fs node.js electron electron-builder

我正在使用 Electron 构建应用程序,并且在登录后保存了一个配置文件。当应用程序在开发中重新打开时,它可以工作,但是当它与电子生成器分发后重新打开时,我必须再次登录。

代码

const {writeFile} = require('fs');
const {join} = require('path');

function write(config) {
    writeFile(join(__dirname, './config.json'), JSON.stringify(config, null, 4), (err) => {
        cb(err);
    })
}

write(someJsonObject);
Run Code Online (Sandbox Code Playgroud)

项目:
Electron
1.7.11 Electron-builder 19.55.2
Node 8.8.1

小智 5

首先检查您没有为您的生产应用程序构建 asar 文件,因为它是只读的,并且您正在尝试直接写入 .asar 文件__dirname。我的建议是为您的配置文件使用可写目录,例如:

const fs = require('fs');
const _HOME_ = require('os').homedir();
const _SEP_ = require('path').sep;
const _APPHOME_ = `${_HOME_}${_SEP_}.myapp${_SEP_}`;

if (!fs.existsSync(_APPHOME_)) {//Check dir exists or create it
    fs.mkdir(_APPHOME_, '0777', true, function () {
        console.log('Created app home dir :)');
    });
}
fs.writeFile(_APPHOME_ + 'config.json'), JSON.stringify(config, null, 4), (err) => {
            cb(err);
});
Run Code Online (Sandbox Code Playgroud)

当然,您可能希望根据您的需要调整此解决方案。希望对你有用!