【发布时间】:2016-11-28 11:11:53
【问题描述】:
我正在使用电子和反应编写桌面应用程序。我想将一些信息存储在 JSON 文件中。我已经尝试了 web-fs 和 browserify-fs 来实现这一点,但都没有按预期工作。我的设置如下
项目/应用程序/(反应文件)
项目/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
【问题讨论】: