Node.js fs.writeFile()不';t返回回调

Node.js fs.writeFile()不';t返回回调,node.js,osx-yosemite,appjs,Node.js,Osx Yosemite,Appjs,我正在尝试将包含用户身份验证数据的文件写入磁盘。为此,我编写了以下函数: function writeAuthFile(data, success, fail) { var fs = require('fs'); fs.writeFile('auth.json', JSON.stringify(data), function(error) { if(error) { console.log('[write auth]: ' + err); if (f

我正在尝试将包含用户身份验证数据的文件写入磁盘。为此,我编写了以下函数:

function writeAuthFile(data, success, fail) {
  var fs = require('fs');
  fs.writeFile('auth.json', JSON.stringify(data), function(error) {
    if(error) { 
      console.log('[write auth]: ' + err);
        if (fail)
          fail(error);
    } else {
      console.log('[write auth]: success');
        if (success)
          success();
    }
  });
}
但它从不调用回调。我看了一下for
fs
,一切似乎都正常了。另外,所有其他异步执行似乎都已停止


这是我第一次在nodeJS中开发一些重要的东西,所以我在这个环境中的经验不多。

您的代码看起来很好,我只需调用
writeAuthFile({test:1}),复制粘贴并运行它,创建了文件
auth.json
。 那么,mb错误在更高的地方?
var fs=require('fs')之后添加
console.log
行和测试。

我唯一看到的是,如果失败,它会尝试记录“err”而不是“error”

if(错误){

console.log('[write auth]:'+err);//如果文件已经存在,则没有参数回调。如果成功,承诺将在没有参数的情况下得到解决。如果要检查文件已经存在,请使用filehandle的另一个函数,然后使用writefile。

非常清楚:所谓“从不调用回调”,你的意思是你的
控制台.log
调用从未运行,还是
成功的
/
失败的
回调没有运行?这两个调用和所有其他调用的执行似乎也停止了。我在
var fs=require('fs')之后有一个
控制台.log()
而且工作正常。而且一切似乎都停止了。
writeAuthFile()之后
call我做了所有其他的事情,但现在没有发生。也许这与权限有关,或者可能与文件句柄的创建有关。文档说它应该转到回调并填充
错误
参数。好的,检查你的
数据
,mb它包含了
JSON的错误。stringify
非常感谢!这似乎是
JSON.stringify()
调用。这很奇怪,之前通过
JSON.parse()
函数从JSON字符串创建了对象。我在代码中看到了类似的行为,所以想问:JSON.stringify()调用的
数据中是否有错误调用不起作用,或者在传递或不传递正确的
数据的情况下调用都不起作用?在我这方面,如果我使用
fs.writeflesync(file,data)
,则对文件的写入可以起作用。即同步方法,但我不喜欢它。同样的问题是,回调有时不会被调用
if(error) {
    console.log('[write auth]: ' + err); //<-this should be "error" and not "err"