如果文件存在,则带有'wx'标志的fs.writeFile不会失败

时间:2015-11-04 15:19:02

标签: node.js fs

我正在使用FileCookieStore,它需要一个cookiefile的路径,并且该文件已经创建。我想使用fs.writeFile创建此文件(如果该文件尚不存在),但如果 存在则不要覆盖它。但是,在下面的实现中,它会覆盖cookiefile的内容,即使它存在,即使wx -flag应该抛出错误而不覆盖文件(如果它已经存在)。

var cookiePath = "cookie.json"

fs.writeFile(cookiePath, null, { flags: 'wx' }, function (err) {
    if (err) throw err;
});

var j = request.jar(new FileCookieStore(cookiePath));
request = request.defaults({ jar : j });

function login(callback) {
    // puts data into j which automatically writes the content to cookiePath
}

我是否误解了writeFile标志wx的正确用法?如果我运行login(),Cookie的内容会自动保存到cookie.json中,但如果我再次运行该文件而未调用loginfs.writeFile会清空该数据库。

2 个答案:

答案 0 :(得分:0)

根据文档,writeFile方法的语法是fs.writeFile(file, data[, options], callback)

我可以看到你发送null代替要写入的数据。这可能是你的空cookie文件背后的原因。

答案 1 :(得分:-1)

你的代码应该是:

fs.writeFile(cookiePath,null,{ flag :'wx'},function(err)

:)