我正在使用电子编写桌面应用程序并做出反应。我想将一些信息存储在JSON文件中。我已经尝试过web-fs和browserify-fs来实现这一点,而且两者都没有按预期工作。我的设置如下
项目/ app /(反应文件)
项目/ index.html中
项目/ JS / bundle.js
项目/ main.js
我正在使用watchify将react文件中的所有更改编译到bundle.js文件(由index.html读取)。
以下内容是从project / app /中的app.js运行的(也是存储JSON文件的地方)
import * as fs from 'browserify-fs';
...
fs.writeFile('./fileData.json', data, function(err){
if(err)console.log(err);
else console.log("success");
});
'success'始终记录到控制台,但无论我如何指定路径,都不会更新文件的内容。
我试过'./fileData.json'
'/ fileData.json'
__ dirname +'/ fileData.json'(告诉我找不到__dirname)
(fileData.json的绝对路径)(告诉我无法找到/ Users)
完成上述操作后,如果我将writeFile更改为readFile并将内容记录到控制台,则会打印更新的文件。即使我删除了fileData.json文件,也会成功读取该文件。
这让我相信fs.writeFile()正在写入不同的目录,而不是正在运行的进程。尽管如此,我在我的计算机上的任何地方都找不到任何其他fileData.json文件。还有其他一些奇怪的行为:
当记录__filename(应记录整个文件路径)时,唯一打印的是“/app.js”,没有前导文件路径。
调用“process.cwd()”只是给了我“/”
使用完整文件路径“/ Users / ....”调用fs.writeFile()时,我找不到文件夹错误
任何人都知道可能导致此行为的原因以及如何解决此问题?
编辑 - 我也尝试通过添加
来获取绝对路径var path = require('path')
var appDir = path.resolve('./app');
再次只给我/ app它应该返回一个绝对路径
答案 0 :(得分:0)
不使用browserify-fs时可以确认相同的行为吗?只需使用普通的fs
。 (请注意,您可以直接从Chrome开发工具控制台执行此操作)。
查看browserify-fs的页面,看起来它使用名为level-filesystem的依赖项(使用级别db)实现了一种虚拟文件系统。因此,您期望创建的文件不是。它们是在级别数据库数据库中创建的。您可能会在某处找到一个级别db文件,其中包含您尝试直接写入其中文件系统的信息。
对于简单的写入/读取JSON文件,我建议https://github.com/sindresorhus/electron-config。