求助:Electron调用fs.writeFile方法后应用自动重启如何解决
解决Electron调用fs.writeFile后应用自动重启的问题
核心原因大概率是开发环境的文件监听机制触发了重载
很多Electron开发工具(比如electron-reload、webpack-dev-server)会监听项目目录下的文件变化,当你写入database.json时,工具检测到文件改动就自动重启了应用,而且因为是正常的重载流程,所以不会抛出报错。给你几个可行的解决办法:
换个文件存储路径
不要把database.json存在项目根目录或开发工具监听的目录里,改用Electron提供的用户数据目录:const { app } = require('electron'); const path = require('path'); const fs = require('fs'); // 获取Electron的用户数据目录,不同系统路径不一样 const userDataPath = app.getPath('userData'); const dbPath = path.join(userDataPath, 'database.json'); // 用这个路径写入文件 fs.writeFile(dbPath, yourData, (err) => { if (err) throw err; });这个目录是系统给应用分配的专属存储区,不会被开发工具监听。
让开发工具忽略这个文件
如果一定要存在项目里,就配置监听工具排除database.json:- 用electron-reload的话,初始化时加排除规则:
require('electron-reload')(__dirname, { ignored: /database\.json$/ }); - 用webpack-dev-server的话,在配置里加:
module.exports = { // ...其他配置 devServer: { watchOptions: { ignored: /database\.json$/ } } };
- 用electron-reload的话,初始化时加排除规则:
检查是否有额外的监听工具
比如你可能用了nodemon来辅助开发,要确保它的配置里也排除database.json,修改nodemon.json:{ "ignore": ["database.json"] }
内容的提问来源于stack exchange,提问作者sanholo
相关产品推荐
相关产品推荐

