电子写json文件工作在开发但不在dist

时间:2018-01-30 20:57:25

标签: json node.js electron fs 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);

项目:
电子1.7.11
电子建设者19.55.2
节点8.8.1

1 个答案:

答案 0 :(得分:1)

首先检查您的生产应用程序是否正在构建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);
});

当然,您可能希望根据您的需求提供此解决方案。希望对你有用!