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();
}
});
}
但它从不调用回调。我看了一下forfs
,一切似乎都正常了。另外,所有其他异步执行似乎都已停止
这是我第一次在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"